自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 leetcode 112 Path Sum C++

这个看了一个别人的代码,写的很优美。 bool hasPathSum(TreeNode* root, int sum) { if(!root) return false; else if(!root->left&&!root->right&&root->val == sum) return true; else return hasPath

2016-05-30 17:53:17 534

原创 leetcode 9 Palindrome Number C++

注意几个点,不能是负数,不用额外的空间。思路就是让数字的第一个数和最后一个数比较。然后去掉头和尾。再继续。不用担心00002这样的情况,因为不影响计算。 bool isPalindrome(int x) { if (x<0) return false; if (x>=0&&x<10) return true;

2016-05-30 17:36:10 554

原创 leetcode 172 Factorial Trailing Zeroes C++

这道题就是看n里面有多少个5+5^2+5^3...... int trailingZeroes(int n) { if(n==0) return 0; int num = 0; if(n/5<5) return n/5; int tmp; while((tmp = n/5) != 0){

2016-05-30 16:57:25 278

原创 leetcode 26 Remove Duplicates from Sorted Array C++

从前往后找,找到一个和前一个数字不同的就放到前面,相同的话不予处理。 int removeDuplicates(vector& nums) { if(nums.size()==0) return 0; int len = 1; for(int i=1;i<nums.size();i++){

2016-05-30 15:48:26 884

原创 leetcode 119 Pascal's Triangle II C++

求杨辉三角的某一行,这次不用记录全部的三角,只要纪录上一行就可以了。 vector getRow(int rowIndex) { vector pre; for(int i=0;i<rowIndex+1;i++){ vector tmp(i+1); tmp[0]=tmp[i]=1;

2016-05-30 15:24:29 478

原创 leetcode 118 Pascal's Triangle C++

杨辉三角:class Solution {public: vector> generate(int numRows) { vector> vec; for(int i=0;i<numRows;i++){ vector tmp(i+1); tmp[0]=tmp[i]=1; for(i

2016-05-30 15:19:21 925 1

原创 leetcode 342 Power of Four C++

这是一个数学问题,要用到等比数列的知识,大部分人已经忘了吧。。。给个别人的答案。 bool isPowerOfFour(int num) { return num > 0 && (num & (num - 1)) == 0 && (num - 1) % 3 == 0; }

2016-05-30 11:58:19 300

原创 leetcode 66 Plus One C++

主要注意一下进位,和数组长度不足的情况。 vector plusOne(vector& digits) { for(int i = digits.size() - 1;i>=0;i--){ if(digits[i]<9) { digits[i]++; break;

2016-05-30 11:34:34 317

原创 leetcode 232 Implement Queue using Stacks C++

用两个栈实现一个队列。class Queue {public: stack s1; stack s2; // Push element x to the back of queue. void push(int x) { s1.push(x); } // Removes the element from in front of

2016-05-30 10:47:35 747

原创 leetcode 27 Remove Element C++

提高效率的方式是把最后一个挪到删除的地方来。 int removeElement(vector& nums, int val) { int size = nums.size(); for(int i = 0;i<size;){ if(nums[i] == val){ nums[i] = num

2016-05-30 10:35:17 469

原创 leetcode 101 Symmetric Tree C++

递归版class Solution {private: bool symmetric(TreeNode* left,TreeNode* right){ if(!left&&!right) return true; else if(left&&!right || !left&&right) return false; else{

2016-05-29 18:32:02 402

原创 leetcode 102 Binary Tree Level Order Traversal C++

和107差了一个逆序class Solution {public: vector> levelOrder(TreeNode* root) { vector> res; if(!root) return res; queue que; que.push(root); while(que.size

2016-05-28 21:01:06 845

原创 leetcode 107 Binary Tree Level Order Traversal II C++

层次遍历,本来一个循环就可以,但是要输出一个二位数组,就变成嵌套循环了。然后把结果逆序一下就可以了。class Solution {public: vector> levelOrderBottom(TreeNode* root) { vector> res; if(!root) return res; queue que;

2016-05-28 20:57:50 1241

原创 leetcode 110 Balanced Binary Tree C++

一次过,但是写出来的代码并不是最高效。class Solution {public: bool isBalanced(TreeNode* root) { if (!root) return true; if(abs(height(root->left)-height(root->right))>1) return false; retu

2016-05-28 20:19:55 720

原创 leetcode 198 House Robber C++

这是我真正意义上理解DP的原理之后解出来的题。对于第n个房间如果拿:那么上一个房间肯定没拿,那就是   maxMoney(n) = 没拿(n-1)+nums[n];如果没拿:那么没拿(n) = maxMoney(n-1);这里我用dp0代表没拿(n-1);dp1代表maxMoney(n-1);class Solution {

2016-05-28 19:45:09 672

原创 leetcode 24 Swap Nodes in Pairs C++

注意只能换节点,不能换值。class Solution {public: ListNode* swapPairs(ListNode* head) { ListNode *cur = head; ListNode *preCur = NULL; if(head&&head->next) head = head->next;

2016-05-28 17:03:13 609

原创 leetcode 21 Merge Two Sorted Lists C++

简单的链表合并问题,注意三种情况,两个头都不为空,一个为空和都为空。另外,先有一个无用的头是一个很好的方法,不用判断是不是第一次。class Solution {public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode *head = new ListNode(0);

2016-05-28 16:22:50 749

原创 iOS设计模式(三) 生成器模式

写的比较乱,看不懂就不要看了,主要给自己看的。。这里主要谈谈自己的理解。生成器模式可以分割代码,让自己的类里面代码不那么庞大。他用来构建复杂的,多个步骤构件对象的情况。举个例子:有一个创建人物类,他有两个方法,分别返回一个敌人对象的实例,另一个返回用户对象的实例。然后有一个人物类,有很多实例方法对人物的各个属性赋值。创建人物类的两个方法分别对人物类进行不同的复制来达

2016-05-25 16:25:31 359

转载 LLDB调试常用命令

原文转载自:http://www.starfelix.com/blog/2014/03/17/lldbdiao-shi-ming-ling-chu-tan/LLDB调试命令初探MAR 17TH, 2014如果你在平时的开发中从未使用过调试器,那你恐怕不知道一个调试器的作用有多大。你可能只满足于通过printf或者NSLog输出信息用于调试。但你只要试着尝试在

2016-05-25 14:42:35 744

原创 leetcode 121 Best Time to Buy and Sell Stock C++

动态规划class Solution {public: int maxProfit(vector& prices) { if(prices.size() <= 0) return 0; int minPrice = prices[0]; int maxProfit = 0;

2016-05-23 21:27:33 501

原创 leetcode 141 Linked List Cycle C++

利用了追赶的原理class Solution {public: bool hasCycle(ListNode *head) { ListNode *fastNode = head; while(fastNode){ head = head->next; if(fastNode->next != N

2016-05-23 20:04:39 448

原创 leetcode 202 Happy Number C++

这个题我实验的两次发现了一个规律。。。只要结果有4就不可能变成1,别的都可以。class Solution {public: bool isHappy(int n) { while(1){ n = getSum(n); if(n==1) return true; if(n==4) return f

2016-05-23 19:45:55 1161

原创 leetcode 70 Climbing Stairs C++

这个是斐波纳切竖列class Solution {public: int climbStairs(int n) { int num1 = 0; int num2 = 1; for (int i = 0;i<n; i++){ int tmp = num2; num2 = num1 + num

2016-05-23 19:24:09 690

原创 leetcode 83 Remove Duplicates from Sorted List C++

这题没什么说的,注意以下节点的销毁。class Solution {public: ListNode* deleteDuplicates(ListNode* head) { ListNode* tmp = head; while(head){ if (head->next == NULL) break;

2016-05-23 17:18:17 511

原创 leetcode 231 Power of Two C++

和power of Three的解法一致class Solution {public: bool isPowerOfTwo(int n) { return fmod(log10(n)/log10(2),1) == 0; }};

2016-05-23 17:10:54 408

原创 leetcode 263 Ugly Number C++

class Solution {public: bool isUgly(int num) { if (num == 1) return true; else if(num == 0) return false; else if(num % 2 == 0) return isUgly(num/2); e

2016-05-23 17:06:43 444

原创 leetcode 326 Power of Three C++

题意是看是否是3的幂,简单的做法:bool isPowerOfThree(int n) { for (int i = 0;;i++){ if (pow(3,i)>n) return false; if (pow(3,i) == n) return true; } return false;

2016-05-23 15:50:09 388

原创 leetcode 350 Intersection of Two Arrays II C++

这题用map实现,即相应位置出现即+1,有点计数排序的赶脚。class Solution {public: vector intersect(vector& nums1, vector& nums2) { map m; vector out; for(int i : nums1) m[i]++;

2016-05-23 15:22:30 1203

原创 leetcode 349 Intersection of Two Arrays C++

这题利用了set里面不能放重复元素的特性来解决class Solution {public: vector intersection(vector& nums1, vector& nums2) { set s; vector nums3; for (int i = 0;i<nums1.size();i++){

2016-05-23 15:20:04 627

转载 nil、Nil、NULL、NSNull的区别

nil:指向一个对象的空指针Nil:指向一个类的空指针NULL:指向其他类型(如:基本类型、C类型)的空指针NSNull:通常表示集合中的空值举例:NSURL *url = nil;Class class = Nil;int *pointerInt = NULL;NSArray *array = [NSArray

2016-05-23 14:35:08 443

转载 NSObject的load和initialize方法

面试被问到了,而且很自信的答错了。。。。因此转了一篇比较好的文章。0. 概述Objective-C作为一门面向对象语言,有类和对象的概念。编译后,类相关的数据结构会保留在目标文件中,在运行时得到解析和使用。在应用程序运行起来的时候,类的信息会有加载和初始化过程。其实在Java语言中也有类似的过程,JVM的ClassLoader也对类进行了加载、连接、初始化。就像Ap

2016-05-23 11:03:47 269

转载 iOS设计模式(二) 简单工厂,工厂,抽象工厂

工厂方法是抽象工厂的组成部分,它适用于:一个类无法预期需要生成哪个类的对象,想让其子类来指定所生成的对象。一般是用一个对象,有多个子类,每个字类都重写父类的一个生成实例对象的类方法。利用多态来实现工厂方法。比如,父类是Animal,子类是dog和cat;[dog createAnimal]返回dog;[cat createAnimal]返回cat;

2016-05-17 11:47:38 274 1

原创 leetcode 191 Number of 1 Bits C++

这个一分钟搞定。就是要对位运算有一定的了解乘2相当于整体二进制位左移一位,而且这种运算方式比直接乘要快。因此只要判断是奇数就加一,然后整体右移一位。class Solution {public: int hammingWeight(uint32_t n) { int count = 0; while(n){

2016-05-15 21:11:51 444

原创 leetcode 235 Lowest Common Ancestor of a Binary Search Tree C++

主要是利用二叉搜索树的性质,即左节点一定小于根节点,右节点一定大于根节点。那么只要从上向下找到一个值介于给定两个节点的值的节点久可以了。class Solution {public: TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { if (p->val v

2016-05-15 21:03:04 364

原创 iOS设计模式(一) 原型模式

原型模式简单来讲,就是 深复制 一个自身的对象。何时使用需要创建的对象应独立于其类型与创建方式。要实例化的类是在运行时决定的。不想要与产品层次相对应的工厂层次。不同类的实例间的差异仅是状态的若干组合。类不容易创建。实现方式是重写- (id) copyWithZone:(NSZone *)zone;使用NSCopying协议在此方法中新建一个自身的对象,并

2016-05-15 20:28:14 258

原创 leetcode 13 Roman to Integer C++

这道题主要是要知道罗马转数字的规则,前边的比后边的小就要减。 int romanToInt(string s) { int a[26] = {0}; a['I'-'A'] = 1; a['V'-'A'] = 5; a['X'-'A'] = 10; a['L'-'A'] = 50; a['C'-'A'] = 100; a['D

2016-05-05 21:20:46 675

原创 leetcode 92 Reverse Linked List II C++

主要思路是记录下翻转的链表的头和尾,分别赋值。ListNode* reverseBetween(ListNode* head, int m, int n) { ListNode* pre = NULL; ListNode* cur = head; ListNode* tmpTail; for (int i = 1 ; i < m;i++){ pr

2016-05-05 21:01:15 407

原创 leetcode 206 Reverse Linked List C++

用一个临时的节点表示head要指向的地址;然后head,和临时节点同步向前移动。class Solution {public: ListNode* reverseList(ListNode* head) { ListNode* pre = NULL; while(head){ ListNode* next = head->next;

2016-05-05 19:31:06 598

原创 leetcode 169 Majority Element C++

使用了pair,元素相同就+1,不同就-1.最后剩下的那个就是。 int majorityElement(vector& nums) { pair p(0,0); for (int i=0 ;i<nums.size(); i++){ if (p.first != nums[i]){ i

2016-05-05 19:07:27 305

原创 leetcode 217 Contains Duplicate C++

我原本想用计数排序来做,就是下面的样子;class Solution {public: bool containsDuplicate(vector& nums) { int a[999999] = {0}; for (int i = 0 ;i < nums.size(); i++){ a[nums[i]]++;

2016-05-04 20:57:17 394

空空如也

空空如也

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

TA关注的人

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