Swift.打印1到最大的n位数

题目描述:输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数即 999。 i c } m l p a o s r s f } f } f } t u u u F n n n F o c c c o r v w } v v v f } r v f } r u 1 p a h i a a a o e p a o e n 2 r r i n r r r r t r r r t d S i l c u i u a o n n e p r i c s i s i } i } } r n i r i } i r t l t u r e s a u n u f f e n t n f n n i u M m ! i m O r m d m l P d i d o t a s i n e v r e i s s i r e n r e S n i x n t n e y = x = n s u i } } e n b s e x b x t o ( = c ( t r d u m f e u r O S n ! r r n _ r p N F = 0 i I e m l { m e v t = u = e + i A e r u l n n x > i s s a e r m a = n { n r m i m o 0 t + = n i e s c n [ k r i 0 s " k g : r e n b w ( ( = = d s u a u i ; F n 0 1 ( a n t e 0 n = 1 e O { m r m n l g { " n I y t P r = . u 1 0 x v r s d o ( u n ( N r ( . m n e - y [ e w _ { m t r u e _ f < s u { = r = i x s ) e m S a n [ m = F = n ] n [ p b t n l u i s l 1 d u n { e e r u s m n . 0 o 0 1 e = m u a r i m e s d c w x s m t ( n s . e o { ] S : s i & g : c x u = t . n n ( o ] n = r S i g u n i u ) t t i t n : m u n n ! r " n r d s m o t - u 0 g i e " ) s u ) + e " ( n x 0 . t . 1 s g ( " { j r c u ) n , o [ e a { m u i S v r ) m c n t e r s o e r r y . u d i s S s n ( n e t t t ) g d r a : ) ] ( i r ) ) ) n t n g I ) { n { d e B x o , o l o f { f s e t B y : i n d e x ) . . . ] ) 算法思想:由于 n 可能会非常大,因此不能直接用 int 表示数字,而是用 char 数组进行存储。使用回溯法得到所有的数。 ...

2015-07-07 · 3 min · 632 words · cubegao

Swift.数值的整数次方

题目描述:给定一个 double 类型的浮点数 base 和 int 类型的整数 exponent,求 base 的 exponent 次方。 i c } m l p a o s r s f } t u F n F o c o r v v i } } } v w } r u 1 p a a f e e a h e n 1 o r r l l r i t d S w e s s l u a o e b e e e i } e e r r e i } b e r t l r a x > x f x e e f a x n i u ( s p p i p { t s e s p o t _ e o 0 o f b o u x e e o e n i n n a r n r : p x r n o b = e { e e s e e n o p e * e > n : n n e t n D n o s = n b t t < u t 1 o e n t 0 { D = r u n e * b o = = 0 = n = b t n = a = ? u l t s b 0 e { 0 0 - e ! b e e r l e = & a x e e { = s p s , / 0 1 e o _ 分 1 n : 母 { = e e 不 = n 1 : 能 t / 为 1 > r I 0 > e n { 1 s t ) D o u b l e { 算法思想: /** ...

2015-07-07 · 2 min · 300 words · cubegao

Swift.求1+2+...+n

题目描述:求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 i c } m l p a o s r s f } t u F n F o c o r v n r u 4 a a u e n 6 d r m t d S d > u a o S r 0 r t l u e n i u m s & o t ( & r n i _ = e o ( s n n 0 r u e { m s : = I n n t u ) m + a I d n d t S u { m ( n u m - 1 ) ) = = 算法思想:累加不能用循环的话,那就试试递归吧。 ...

2015-07-06 · 1 min · 113 words · cubegao

Swift.二进制中1的个数

题目描述:输入一个整数,输出该数二进制表示中 1 的个数。 c } l a s s f } f } u u F n n o c c r v v w } r v v w } r 1 f a a h e f a a h e 0 i r r i t i r r i t S n l u n l u o d s c e i } s r d s c e c s r l O o f n O o o n u n = u s = n = u s u = t e n s c e n n c i ( n t ! c s o 2 n t ! t s o o _ = & o > u ( = u n = u > n _ = + & n n 0 1 n 1 t 0 = t { : 0 t n 0 ( { = : { 1 s I = + n = I - t 1 n ) 1 t 1 { ) ) I n I t n t { { 算法思想:n&(n-1),该位运算去除 n 的位级表示中最低的那一位。 ...

2015-07-05 · 1 min · 193 words · cubegao

Swift.斐波那契额数列

题目描述:求斐波那契数列的第 n 项。 i c } m l p a o s r s f } f } t u u F n n F o c c o r i } i } i } r i } i } v v v f } r u 0 F f f f e F f f a a a o e n 9 i t i r r r r t d S b n n u b n n u a o o r r n r r o r r l l r i i } r t l n < e = e e n n = e = e a a e f n i u a = t = t > t a = t = t s s s i o t c u u u 0 c u u t t n i r n i c 0 r 1 r 1 r c 0 r 1 r l = r l l e o i n n n i n n a = 0 > e a a s n ( { { { 2 { { s 0 . s s s _ 0 1 F ( 0 1 t 1 . 1 t t { i _ < = l n b = n { a = : o n + l s n : 0 1 a t r I a s e n c I { t = s t c n ) i t + l ( ) a n l s - a t 1 s I ) t n I l t + n a t s { F t i { b o n a c c i ( n - 2 ) 算法思想:如果使用递归求解,会重复计算一些子问题。例如,计算 f(4) 需要计算 f(3) 和 f(2),计算 f(3) 需要计算 f(2) 和 f(1),可以看到 f(2) 被重复计算了。 递归是将一个问题划分成多个子问题求解,动态规划也是如此,但是动态规划会把子问题的解缓存起来,从而避免重复求解子问题。 ...

2015-07-04 · 2 min · 315 words · cubegao

Swift.旋转数组的最小数字

题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 i c } m l p a o s r s f } f } f } t u u u F n n n F o c c c o r v r i } i } i } i } r v v w } r u 0 f a e f f f f f e m a a h e n 8 i r t i t i r r i t d S n u n l n n n u n l u a o d s r d e r [ r [ r [ r r ( r r e i } r r t l M n ( f e l e l e m e n _ e f n i u i = _ t t e t e t i t s = r + o t n f u f u f u d u n n r = r n i ( n i n = r t r t r + r [ : = l < e r e o _ n : = n ] n ] n 1 n l e = s e 1 s n d ] e [ n f s n ( i m n = m > f f f I [ t r > { : & n i [ = i i > i t n l i = s o d r n n n n ] t e + g n [ , u i n ( [ d n d ] f h [ n I t { g [ n m ( [ ( > , t 1 t r [ n 0 h r , i & r & _ ] ] r t , [ t i d n i n n { ] ] I ] g l ] , g , [ l { ) ( n h e l h m m e n t t f { e t i i f . ] ] t f ] d d t c , , t + + : o _ & , { 1 1 I u & r ( , ] I n n l i l ( n t t e n g e m ? t - f [ h f i , { 1 t l t t d n _ ) : e ) + + [ / f m r m r 2 I t i i i i , n ] d g d g t ) h + h n , = / t 1 t . _ = 2 / ] : c , 2 o m n m ) : I u i [ i , n n d m d r n t t : i ) i [ ) - d g l 1 I ] h e ) n t f t { ) t , ] I _ n t r i { g h t : I n t ) I n t { 算法思想:将旋转数组对半分可以得到一个包含最小元素的新旋转数组,以及一个非递减排序的数组。新的旋转数组的数组元素是原数组的一半,从而将问题规模减少了一半,这种折半性质的算法的时间复杂度为 O(logN) 此时问题的关键在于确定对半分得到的两个数组哪一个是旋转数组,哪一个是非递减数组。我们很容易知道非递减数组的第一个元素一定小于等于最后一个元素。 ...

2015-07-03 · 3 min · 529 words · cubegao

Swift.重建二叉树

题目描述:根据二叉树的前序遍历和中序遍历的结果,重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 i c } m l p a o s r s f } f } f } t u / u / u F n 不 n 能 n F o c 能 c 改 c o r v v r v l v w } f } r 改 i } l p f } r 变 i } l p f } r u 0 r a a e / a a e a / a h o e 变 r f e r o e 输 r f e r o e n 6 e r r t 下 r r t r 左 r i r t 输 e t i r t 入 e t i r t d S b u 面 子 l u 入 c s n u c p n u a o u p i r 是 r t r r 树 l e l ( v i } } } r u t r r t i i } r u r r r t i i } r t l i n 循 o r e i 长 e e i a f e e n r a e o ( n f n r e e o ( n f n i u l = = 环 o e s g 度 f i f r l l s r t o r d s O t o r d o t d r t e h t n t , i s s r i t u t o e i r i r u t o e i r n i T p i e V = t L O L f c e f w } e f l i } w } e v P r o x n r r b o v d r o x n p r r b o o r r n c a = T e r e n i = o i h i e f h s e r n = t O o o r o e e n = t O r o o r o n e e O u l t r n d n ) n = n i n i { n t i 1 e . i r o o e t 2 r . i r i o o e t e O r r u T r e e d t f d l d f l ( n T v n d t t a ( . n T v n d n t t a { 1 r d s e r e e = r + i I 0 i I e i } } f I r i r e i } } f _ > i r a e . . k _ c i r a e t . . k ( d e i e e [ = n n n i n / f e i n i n / o f e i l e l s r l r o l e l s r ( l r _ e r v = e = 0 l d { u d f 从 l n d g d 右 o f l n p e e ) t [ e i p u e ) t [ " e i r e N e 1 p e e < e i 左 i s d e h I 子 t i i s d r n N a i f g r n N a i \ f g p 2 p o t f r x = x n 向 n t t r b e t t r b I x t n 树 V n n r r r b e r r r b I e d o r n t h e t o r n ( t h r ( r d r t e d 右 O r r o r r r o r n L d 的 a d O i i o r i i o r n O P d t d t O d t d s t e & e e e L O = l = I 查 r e e o e i e e o e d = e e 第 l I r g g o e i g g o e d r r e I e = r = e I e t = O p O ( e e r e n 找 d e e t a f e e t a e n x 一 u n d h h t a f h h t a e d e ( n x = d = ( n x a = r , r r n d 0 f 0 d , e . V k . V k x l 个 e d e t t V k t t V k x e p . ] r e p . ] r r d d o ] e t e 先 r r = a i l = a e = = 节 e r T T a i T T a r r . e r r 0 r . t e r e & e o r L x 找 [ i l n e l + f = 点 = x [ r r l n r r l + : e . = c e : e . = I c e r i r t ! . e 到 f g t u O f t u = t p f e e u O e e u = O e = u c O e = n u c : , [ V = e n < 根 i h r e r t r e L r i n < i e e e r e e e i s r n r u i r n ) r u 0 a n = 节 n t e d e 1 e e = n . d . 1 n t d d r s r n d d r + s r [ 0 ] l r u { 点 d e = e = e = n O { d r = = e l = = o a e I o i s o s e I o + i s I , u o m l , I = . r . r r I i r e u r r n o v i u t r n + v i n e o e e 说 n r n [ T l n + d i n g r n [ f r n t t [ t e v t a . t e v t i ) t r f 明 d T i f r e e g d h i f t i I s { . 1 e r r { . ( 2 e ] . V a t n e r g i e f 1 r h e t g i g [ n t v ( 1 [ t e v i ( 2 , c a t L 在 x e h n e t . t x h n = h I a a & ( I I m a n & ( o l e e 右 ] e t d N ! c L ] = t d t n > r l p & n n o l d p & _ u u d n 子 N ! I o o e T I T T t t r p t v e r p n e ( 树 = o n d u n = T r n r r ] e P { e r ] > e { x e r i t ) { 上 = d d e n = r e d e e , n r O e , F ) O e n - { e e ( t { e e e e e _ d e r O e i + r O O 1 { r ( x n r e . x N . I ] d r _ n r + d r r ) o n ] ) - o N r ] o l s n ) e d d s + e d d o ) o o i d e t r e i I t \ r e e t = 1 t d g = e f a , r n n ( ( , r r V = V e h = ( t r { , O ) e , : a a ( t n ! t s r ) n & l n l n ! n ) P t s d { d i & [ u u ) r a t e I n i I e { e { e r a r n O n n : t r : ) r O t { { P t " d r ] I r P i ) e d n e r n r e ) t + e o , r , 1 + u , _ , ( t s i t i e s n [ a n T n t d I r d r d a e n t e e P r x t I x e r t - ] n + N e P s , , 1 o : r t _ , d e a i e I + r s n e ? n ( t t d n t i I a e d { , n n r x I d ) t - n _ e + I 1 ) x 1 n ) i - , : n s O t e I r a n n d r d t e t P , r I r _ : n e ) , e i , n n & d o & i I u i n n t n O : O r [ r d I I d e n n e r t t r , ) ] , , i _ s n t d s a e T t r x r a t + e r I 1 e t n , N I , o n e d : i n e n d ? I d I n e n { t x ) , - _ 1 ) e n d I n : I n t ) T r e e N o d e ? { 算法思想:前序遍历的第一个值为根节点的值,使用这个值将中序遍历结果分成两部分,左部分为树的左子树中序遍历结果,右部分为树的右子树中序遍历的结果。然后分别对左右子树递归地求解。 ...

2015-07-02 · 9 min · 1840 words · cubegao

Swift.从尾到头打印链表

题目描述:输入一个链表,从尾到头打印链表每个节点的值。 i c } m l p a o s r s f } t u F n F o c o r i } p u 0 p f r n 5 r i d S i h n a o n e p t t l t a r ( i u L d i h o t i ? n e n i s . t a o t n L d n N e i ! o x s . { d t t v e N a ( ! o l _ = d ) e h n ( e i h a l e d a : { d ? L . i n s e t x N t o ) d e ? ) { 算法思想:采用递归的解法,利用栈的原理。 ...

2015-07-01 · 1 min · 135 words · cubegao

Swift.n个骰子的点数

题目描述:把 n 个骰子扔在地上,所有骰子朝上一面的点数之和为 s。输入 n,打印出 s 的所有可能的值出现的概率。 i c } m l p a o s r s f } t u F n F o c o r v l l l a a v f } f } l v f } u 4 d a e e e r r a / o / o / e a o n 3 i r t t t r r r 一 r 剩 r 打 t r r d S c . . 个 下 印 a o e a m f n a a f 骰 i a 的 i f } f } f t i i p i t l P r a i e p p l 子 r 骰 / o / o l o n r n i u r r x r x p p a 的 i r 子 i 清 r 计 r a t d i i d o t o C s t e e g 情 n [ n 空 算 g a e n n e n i b = o t n n 况 f 不 j a 每 k v a w } l x t x o i u = d d = 1 l 2 存 r 个 a r h = a ( n l [ n = ( ( . a . 在 i r 存 i r r i : = r " + i [ t [ f n 0 . g . 的 n [ 在 n [ l 1 D r 点 = { t I [ I i e . ] . 点 1 的 m 1 e a m o 0 [ 数 y n = I n r x 6 [ d 数 0 - 点 i - r - u f \ 1 ( t n t s t i i , . f 数 . = f m r + b l ( d ] 6 t ] t ) { ] c 2 . l . l [ = f l a i i ] ] ( ) e 个 < a . 1 a < 1 l e g n c ( ( r = C 骰 i g 6 g = - 1 a ] d e ) r e o 子 ] * ] f g = e C d e p 1 u 不 { [ i [ 6 l { x o i p e n 存 j k a p ) u c e a t 在 ] { ] & g o 出 n e a t 1 & ] w 现 t C t i { = = [ ( 的 : o i n m k 6 概 I u n g 0 0 ] . 率 n n g : < 0 : t t : = + , \ ) 0 = ( + 0 , k D D { , a o o 1 c { r u u c o r b b o u [ l l u n f e e n t l ( ( t : a d i : g i ) m ] c / m a [ e t a x k C o x C - o t C o m u a o u ] n l u n t ) n t ) " t ) ) ) ) 算法思想:动态规划求解,每次都算出可能存在的所有点数。 ...

2015-06-24 · 3 min · 585 words · cubegao

Swift.树中两个节点的最低公共祖先

题目描述:求树中两个结点的最低公共祖先,此树不是二叉树,并且没有指向父节点的指针。 i p } c } m u l p b a o l s r i p p p } s f } f } f } t c u u u u u u b b b F n n n F c l l l o c c c o l i i i s s r v v g g r i } l l i } i } v v w } r u a c c c e e 5 c a a e e e g f i e f f g a a h e n s l l 0 o r r t t t e s t e r r i t d s v v i f f S m N N u t r t a l t l u a a a n . . o m l l o o r N o r . a r f } i l L t i e i } i r t M r r i v c l o i i d d n o o e a r r o s i a e n f n n i y t a h u n s s e e d t t p r r t s s m d i d o T v c ( l i t T t t P P g e ! u p ! . t t p e n p e t n r a h _ l i r 1 2 a a e P . r e = = n i } g l . C : x d 1 t b x e e l i = d o e t t t a v n n o f e a r o e [ e r m e : l v r n e = = h h L t a d r n d t s e m M = x i m e + p N d a v e N ( ( a h l ( o i e n N t m m y n p a = o I r l a n { o [ [ r r s ( r o l o l b o ? o o T 1 < d k d n e : l d M M o o t _ = o t i d i r d . v n r e = 1 e t n = e y y o o C = o ! { n e s e e v e N e p x : I ( T T t t o r t . . t a P a L o e 1 ] p { n n _ r r , , m o p ! c a v . k a l a d N . . 1 [ t i e e m o . ) h r a a t s e o c v [ M ) l r e e a b o t v i r l p h ! t ( d o a i y o N N , , n : a l ! p ( = ( _ e u l n T { o o o N l d = e n ) ? n d r t d d & & o M r { = n o p p t = e e : e e l l d y { e d d . 1 = = x e ] ] i i e T n p ( e v : { ] N M ( ( s s ( r . n , a n p o y ) ) t t l e v o l [ i 2 d T 1 2 i e a d p M l [ e r ) ) s N l e , { y i ] e t o ) T n ? e 1 d { & r d N , e l e e o ? i e x d l , s N ] e i _ t o . , s ) d v _ t p e a 2 : ] l a ) , : M _ { y M T p y r 2 T e : r e e N [ e o M N d y o e T d , r e _ e , e _ l N i o b s d : t e : ] M ) y i T n r o e u e t M N y o [ T d M r e y e ) T e r N e o e d N e M o ? y d T e { r ] e ) e N { o d e ? { 算法思想:假设是二叉树做的。还要优化。 ...

2015-06-08 · 4 min · 837 words · cubegao