自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

MuseCP@YenTown

爱看看,不看滚

  • 博客(14)
  • 收藏
  • 关注

原创 389. Find the Difference的C++解法

要考虑到统计重复字母的个数,比如s里有3个a,t里面有4个a,所以多出来的是a。我的解决办法就是找到一个删除一个,要使用迭代器。class Solution {public: char findTheDifference(string s, string t) { int i; for (i = 0; i < t.length(); i++) { int flag = 1

2017-03-31 11:05:13 402

原创 104. Maximum Depth of Binary Tree的C++解法

用递归,当前树的深度就是左右子树中深度更深的那个+1。注意边界条件和判断子树为空的情况。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val

2017-03-30 13:31:29 331

原创 520. Detect Capital的C++解法

因为首字母可以和第二个字母不一样,所以从第二个字母开始检测之后的字母是否一致就可以了。但是需要排除首字母是小写之后是大写的情况。class Solution {public: bool detectCapitalUse(string word) { if ((word[1] >= 65) && (word[1] = 97) && (word[0] <= 122)) return fal

2017-03-29 11:27:55 218

原创 448. Find All Numbers Disappeared in an Array的C++解法

假设存在值nums[i],则用nums[nums[i]]标记其存在(我使用的方法是加上数组的长度,因为给定的条件是数组内的数不大于数组长度),最后遍历数组看看没有大于数组长度的数就是不存在的数。需要注意的问题:1.边界问题。数组从0开始,但是序列从1开始,有一个差1的关系。2.后面的数在遍历到自己的时候,里面的数可能已经改变了(比如a[7]=2,但是因为a[0]~a[6]中有7存在,所

2017-03-28 11:20:17 254

原创 136. Single Number的C++解法

我觉得我是一个傻子。因为题目限制了用线性复杂度且不扩展内存,一开始我想的是用nums[nums[i]]的正负号标记nums[i]出现的次数,后来发现给出的原序列没有说本来就是正整数。然后想了很久都没想出来。其实这个题的关键在于只有一个数是不重复的,已知A XOR A=0,A XOR B XOR A=B,只要把所有数连续异或就好了。class Solution {public: int si

2017-03-27 11:23:31 343

原创 485. Max Consecutive Ones的C++解法

感觉没啥好说的啊= =,应该没人做不出来吧。但是评测速度落到了后百分之十是什么鬼啦!class Solution {public: int findMaxConsecutiveOnes(vector& nums) { int count = 0; int max = 0; for (int i = 0; i < nums.size(); i++) { if (nums

2017-03-24 10:03:32 269

原创 292. Nim Game的C++解法

考虑:1.有1,2,3颗石子,我方可以直接取胜。2.有4颗石子,我方无论如何都不可能取胜,因为无论怎么拿都会给对方剩下正好能取走的石子。   (可以发现,剩4颗石子的时候谁先手谁输。)3.有5,6,7颗石子,我方可以通过拿1,2,3颗石子,使局面变成剩4颗石子且对方先手。4.有8颗石子,我方无论怎样拿,对方都可以造成剩4颗石子且我方先手的局面,我方不可能赢。5.以此类推,只

2017-03-23 11:28:48 351

原创 463. Island Perimeter的C++解法

思路挺简单的就是找规律,遍历每个点,如果这个点是1的话默认它有四条边,但是如果有一个相邻的1就少一条边。常数向量pq是上下左右四个相邻点的坐标位移。class Solution {public: int islandPerimeter(vector>& grid) { int m = grid.size(); int n; if (m != 0) n = grid[0].siz

2017-03-22 16:25:46 258

原创 496. Next Greater Element I的C++解法

pascal写多了就有个毛病老是分不清数组的上下界,边界带不带等号半天改不明白。没想出这个题有啥快捷的算法,就老老实实把每个元素都找一遍,时间复杂度O(n²)。class Solution {public: vector nextGreaterElement(vector& findNums, vector& nums) { if (findNums.empty()) return f

2017-03-21 14:33:03 196

原创 344. Reverse String的C++解法

感觉问题特别简单啊,这是第一版的代码:class Solution {public: string reverseString(string s) { string result=""; for (int i = s.length()-1; i >= 0;i--) result = result + s[i]; return result; }};结果运行显示内...

2017-03-17 10:33:28 344

原创 412. Fizz Buzz的C++解法

思路就是用%取余做判断:class Solution {public: vector fizzBuzz(int n) { int i = 1; vector result; for (i; i <= n; i++) if ((i % 3 == 0) && (i % 5 == 0)) result.push_back("FizzBuzz"); else if (i %

2017-03-16 10:11:12 824

原创 500. Keyboard Row的C++解法

题目分析:给出的模板是一个引用,我表示很懵逼。问了一下枭哥。&为左值的时候表示和右边的变量指向同一个内存空间。如:int a=3;&b=a;//b指向a的内存,a改变则b跟着改变&为右值的时候标示取地址,如:int a=3;int *b;b=&a;//b的指是a在内存中的地址c=*b;//c取到了a的值在传参中&相当于取左值。我的代码思路很简单。就是把键盘的

2017-03-15 13:20:09 798

原创 476. Number Complement的C++解法

本来以为上一道题我的写法是最蠢的,没想到这道题用了更蠢的写法,而且竟然没想出来怎么写效率更高。运行速度垫底。class Solution {public: int findComplement(int num) { int x[32]; int i = 31; while (num) { x[i] = num % 2; num = num /

2017-03-14 11:12:55 231

原创 461. Hamming Distance的C++解法

我自己最初的解法,愚蠢至极:class Solution {public: int hammingDistance(int x, int y) { int x1[32]; int x2[32]; int i = 31; int sum=0; for (i; i >=0; i--) { x1[i] = x % 2; x = x /

2017-03-14 10:02:44 314

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除