您的位置:首页 > 其它

leetcode easy

2016-04-25 22:24 190 查看
Add Digits

每一位相加,直至得到的数字为个位数。

返回值只可能是0-9,并且0的情况只有输入数字是0.

剩下num,均是按照1-9循环出现的。则:

num == 0 ? 0 : (num%9 == 0 ? 9 : num%9).

Happy Number

一个数字上的每位的平方相加,循环,直到得到的值为1。

遍历每一位,得到的值,如果此值为1,则返回true,反之,将该值放入hashset中,如果hashset中已经有该值,则说明其陷入循环之中,即不会不出现1,结束返回false。

Move Zeroes

将数组中的0放到数组末尾,非0数字按顺序放在数组前面

如果此位为非0,继续,如果为0,则从此位开始找到第一个非0数,交换。

Binary Tree Level Order Traversal II

将二叉树每层放入一个list中,最终整个list组反转

使用两个队列,queue1放上一层节点,queue2放当前结果。直到queue1为空,结束。

Factorial Trailing Zeroes

得到n!(n的阶乘)中末尾0的个数。

末尾出现0的情况为:因数中有2和5,而在n!生成过程中,2的幂指数一定大于5,所以这道题转化为得到n!的5的幂指数。

Palindrome Number

判断是否是回文数字,即对称。(不申请额外的空间,即将此数字每一位放入数组中,然后首尾渐进匹配)

从个位开始一次取出每一位组成一个新的数字,判断此数字是否和原有数字相等。如果为回文,则一定相等。

Merge Sorted Array

数组A长度为num1+nums2,但其由数值长度为num1,数组B长度num2。两数组均为排序好的数组,则将两数组合并排序且放入数组A中,只可以申请o(1)空间。

通常合并排序从前向后比较,这里A数组后续num2部分没有数字,所以可以从后向前比较合并,这样就不要申请额外空间le。

Contains Duplicate II

数组在连续k个长度中是否出现重复元素。

维护一个长度为k个hashset,start~end表示hashset中存放的数值。每加入一个元素:

如果在hashset中,返回true;

反之end++,加入hashset中;

如果end-start > k,表示大于窗口,则start++,向后移动窗口。

如果end大于数组长度,则表示没有,返回false。

Rotate Array

将一个数组循环移动k步。o(1)空间且in-place

最简单的想法是每次移动一步,移动k次。复杂度高。首先当k大于数组长度len时,则只需要移动k%len次。其次,

假如需要移动数组为AB(AB分界为k),则需要将其变为BA。则可以(取反(取反A)(取反B))正好为BA,为所求。

Two Sum

找出数组中之和为target值的两元素的下标。

以一个数字为基准,判断剩下的是否有符合条件的元素,返回。复杂度为O(n2). 可以维护一个hashmap(nums[i], i)。则遍历每一个元素,查找target-nums[i]是否在hashmap中,如果在,则返回对应的下标。

Count Primes

返回小于n的质数的个数,要求复杂度O(n)

申请一个n大小的bool数组,从2开始初始为true。则针对每一个数,如果为false,则继续。如果true,则将i*i到i*i+k*i
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: