- 博客(11)
- 收藏
- 关注
原创 [LeetCode]Majority Element
题目:找出一个数组中大部分的数(某个数出现的次数超过⌊ n/2 ⌋次) 分析:方法一:将数组进行排序,查看nums[ i ]==nums[ len/2+i ],若是,则输出nums[ i ],若不是,则i++ 方法二:Moore‘s voting 算法:每次都找出一对不同的元素,从数组中删掉,直到数组为空或只有一种元素。 c++参考代码: 方法一: class Solution
2015-10-19 21:10:43 226
原创 [LeetCode]Power of Two
题目:判断一个给定的数是不是2的指数 分析:正整数才有可能是2的指数;若是2的指数,则该数的二进制表达有且只有一个1;n&(n-1)将会使得n二进制中1的个数减少一位; C语言参考代码:(代码二更加高效,且直接使用了二进制的方式) 代码一: bool isPowerOfTwo(int n) { if(n return false; while(n%2==0)
2015-10-19 20:56:04 259
原创 [LeetCode]Reverse Bits
题目:将一个给定的32位整型数的二进制位翻转,输出新的32位整型数 分析:直接将数的低位二进制加到新的数的对应位置即可 C语言参考代码: 第一种(以十进制的方式考虑): uint32_t reverseBits(uint32_t n) { uint32_t m=0,i=0,temp; while(n) { i++; temp
2015-10-19 20:38:38 216
原创 [LeetCode]Number of 1 Bits
题目:求一个32位的int数二进制序列中1的个数 分析:第二种方法时间复杂度低。 第一种:将n与pow(2,++i)进行比较,选择n不大于的最大i值,count++,n=n-pow(2,- - i); 第二种:n&(n-1),n中的二进制1将会减少一个,count++ 第一种C语言参考代码: int hammingWeight(uint32_t n) { int i=0,cou
2015-10-19 11:30:46 240
原创 [LeetCode]House Robber
题目:求非负整数链表的和的最大值,不能取相邻的元素值。 分析:此题目是动态规划问题,需要考虑状态转移方程。假设第i个位置时取得了最大值,那么 maxN[i]=max(maxN[i-2]+nums[i],maxN[i-1]); 动态规划类似于递归的思想,问题的最优解取决上上一步的最优解。其中maxN[0]=nums[0]; maxN[1]=max( nums[0] , nums[1]); c+
2015-10-19 10:48:07 196
原创 [LeetCode]Happy Number
题目:判断给定的正整数是不是Happy Number,经过一下计算,若结果为1则为Happy Number。 分析:使用vector来判断中间结果是否出现过,若出现则会陷入死循环,则不是Happy Number c++参考代码: class Solution { public: bool isHappy(int n) { int sum=0;
2015-10-16 17:43:55 229
原创 [LeetCode]Remove Linked List Elements
题目:将给定的值从单链表中删除 分析:该题目head为头结点,注意将删除的节点释放空间 C语言参考代码: /** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode* r
2015-10-15 17:42:35 218
原创 [LeetCode]Count Primes
题目:给定一个正整数n,求出该范围内素数的个数 分析:采用埃拉托斯特尼筛法,求出素数个数 c++参考代码:
2015-10-15 09:28:10 190
原创 [LeetCode]Isomorphic Strings
题目:判断连个字符串是否同构 分析:利用map,查找键值对,注意要分别对两个字符串进行键值对查找 c++参考代码: class Solution { public: bool isIsomorphic(string s, string t) { if(s.length()!=t.length()) return false; map mp;
2015-10-14 17:35:36 204
原创 [LeetCode]Reverse Linked List
题目:反转单链表 分析:用指针,不断进行交换 C语言参考代码: struct ListNode* reverseList(struct ListNode* head) { if(!head||!head->next) return head; struct ListNode* p,*q,*r; p=head; q=p->next;
2015-10-14 09:07:08 183
原创 [LeetCode]Contains Duplicate
题目:给定一个数组,判断是否有重复,有重复返回true,无则返回false C语言参考代码: bool containsDuplicate(int* nums, int numsSize) { for(int i=0;i for(int j=i+1;j { if(nums[i]==nums[j]) return true;
2015-10-12 11:26:58 248
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人