代码改变世界

Plus One

2015-03-17 09:21 by 笨笨的老兔子, 174 阅读, 0 推荐, 收藏, 编辑
摘要:大整数加法,只要加一就是一道模拟题,注意都是9的情况前面需要补一位 class Solution {public: vector plusOne(vector &digits) { int carry = 1; int index = digits.size() - 1; while (carry ==1 && index >=0) {... 阅读全文

Valid Palindrome

2015-03-16 15:32 by 笨笨的老兔子, 128 阅读, 0 推荐, 收藏, 编辑
摘要:判断一个字符串是否是对称的 跳过所有非数字和字母,字母不分大小写 知道函数isalnum和tolower或者toupper就可以做了,两个指针一个指向头,一个指向尾,朝中间靠拢比较 空串是对称的 class Solution {public: bool isPalindrome(string s) { if (s.empty()) { return tru... 阅读全文

Pascal's Triangle II

2015-03-16 14:52 by 笨笨的老兔子, 169 阅读, 0 推荐, 收藏, 编辑
摘要:输入一个整数n,打印杨辉三角的第n行 只要知道一下公式即可,杨辉三角所对应的值即n次多项式展开的系数(x+a)n=C0nxna0+C1nxn−1a1+...+Cnnx0an注意不要直接求Cmn会溢出,首先简单推导一下Cmn和Cm+1n之间的关系,即Cm+1n=Cmn∗n−mm+1,然后就每一次递推求解 class Solution {public: vector getRow(int row... 阅读全文

Pascal's Triangle

2015-03-16 14:17 by 笨笨的老兔子, 187 阅读, 0 推荐, 收藏, 编辑
摘要:输入一个整数n,打印一个n行的杨辉三角 帕斯卡三角也叫杨辉三角,每一行的第一个和最后一个都是1,其他数字的递推式是a[n][i]=a[n-1][i-1]+a[n-1][i] [1], [1,1], [1,2,1], [1,3,3,1],[1,4,6,4,1] 注意点 输入数字是int需要是自然数 每一行的首尾都push整数1 class Solution {public: ... 阅读全文

Remove Duplicates from Sorted List

2015-03-16 11:02 by 笨笨的老兔子, 117 阅读, 0 推荐, 收藏, 编辑
摘要:删除一个有序单链表的重复节点 For example,Given 1->1->2, return 1->2.Given 1->1->2->3->3, return 1->2->3. 思路:两个指针,一前一后,前面指针的值与后面指针的值相等就往前,直到不同,后指针的下一个节点指向前指针,然后继续。注意一下边界: 头指针为空 链表只有一个节点 尾部需要处理 class Solution {publi... 阅读全文

Remove Nth Node From End of List

2015-03-16 10:25 by 笨笨的老兔子, 127 阅读, 0 推荐, 收藏, 编辑
摘要:去掉一个单链表的倒数第N个节点 思路很简单,两个指针,一个指针提前跑n个节点,然后再一起奔跑,提前跑的那个到达尾部的时候,后面跑的那个指向倒数第n+1节点。需要注意一些边界: 头指针为空 n大于链表长度 n等于链表长度 class Solution {public: ListNode *removeNthFromEnd(ListNode *head, int n) { if (!he... 阅读全文

Add Binary

2015-03-10 10:27 by 笨笨的老兔子, 208 阅读, 0 推荐, 收藏, 编辑
摘要:做一个二进制数字加法器 按照正常思路进行加法即可,设定一个进位变量carry,然后进行模拟 class Solution {public: string addBinary(string longStr, string shortStr) { string res; if (longStr.size() = 0; i--, j--) { ... 阅读全文

Climbing Stairs

2015-03-09 09:37 by 笨笨的老兔子, 130 阅读, 0 推荐, 收藏, 编辑
摘要:爬楼梯,一次爬一层或两层,要爬n层,有几种方法 本题有一个简单的递推式:f(n)=f(n−1)+f(n−2) 注意点: 注意n的边界 注意不要使用递归求解,会爆栈以及浪费大量时间 class Solution {public: int climbStairs(int n) { if (n < 0) return 0; if (n <= 2... 阅读全文

Intersection of Two Linked Lists

2015-03-08 10:50 by 笨笨的老兔子, 138 阅读, 0 推荐, 收藏, 编辑
摘要:存在两个单向链表,如果两者在某个节点相交合并,则返回交点,不相交则返回null。 思路:如果两个链表长度相等,则两个指针依次前进,到结尾之前如果遇到val值相等,则返回该节点。如果不相等,则长的那个链表先走若干步,使得剩下的步数与短的链表的步数相同。 注意点 空指针 由于是单链表,需要保存链表头 class Solution {public: ListNode *getIntersection... 阅读全文

Palindrome Number

2015-03-08 10:49 by 笨笨的老兔子, 158 阅读, 0 推荐, 收藏, 编辑
摘要:判断一个整数是否是回文数 注意点: 负数不是,因为多了一个负号 小心溢出,比较的时候不要将数字12345EDCBA变成ABCDE54321进行比较,而是将ABCDE5432和12345EDCB进行比较。 class Solution {public: bool isPalindrome(int x) { if (x =10) { reverse = rev... 阅读全文