摘要:
合并有序两个链表 class Solution {public: ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) { ListNode* res = new ListNode(0); if (l1 == NULL) { return l2; } ... 阅读全文
随笔档案-2015年03月
Multiply Strings
2015-03-31 16:10 by 笨笨的老兔子, 148 阅读, 收藏,
摘要:
字符串的大数乘法,模拟题 把两个字符串倒过来以后对应位置相乘,注意最终结果要去掉最前面的0 class Solution {public: string multiply(string num1, string num2) { reverse(num1.begin(), num1.end()); reverse(num2.begin(), num2.end());... 阅读全文
3Sum
2015-03-30 16:10 by 笨笨的老兔子, 147 阅读, 收藏,
摘要:
给定一个数组,如果存在三个数的和为0,求这三个数a、b、c,并使得a > threeSum(vector &num) { vector >res; if (num.size() 0 && num[i - 1] == num[i]) continue; target = num[i] * (-1); ... 阅读全文
Container With Most Water
2015-03-30 14:19 by 笨笨的老兔子, 151 阅读, 收藏,
摘要:
给定一个有高度数组a,其中两个元素ai和aj构成一个水箱,水箱体积为V=min(ai,aj)∗abs(i−j),求maxV 基本思路,首先我们设定两块木板head和tail一个在头,一个在尾部,这个时候(tail−head)一定是最大的。然后开始往中间收缩,选择从短的板子开始往中间收拢,原因是水箱能够放的水的容量有最短的板决定。然后每次都比较收拢之后的容量是否大于原有容量,直到所有板子都被遍历到。... 阅读全文
Longest Substring Without Repeating Characters
2015-03-30 11:14 by 笨笨的老兔子, 339 阅读, 收藏,
摘要:
求最长字串,要求字串中的所有字母不重复 思路 设定head和tail两个指针,tail每往前移动一格,便检查tail和head之间的所有字母是否与tail指向的字母重复,如果重复则将head指向重复的后一格例如:abcdefdc,当前head指向a,tail指向f,当tail指向下一个d的时候扫描head和tail之间的值,发现c后面的d和tail指向的d重复了,则将head调整为指向e。 cla... 阅读全文
Add Two Numbers
2015-03-30 10:32 by 笨笨的老兔子, 160 阅读, 收藏,
摘要:
给定两个链表,链表中的数字非负,这是将两个整数由链表表示,且逆序,求两个整数的和。Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)Output: 7 -> 0 -> 8思路:模拟题,对应位数相加,考虑一下链表长度不同,以及进位即可 class Solution {public: ListNode *addTwoNumbers(ListNode *l1, ListNod... 阅读全文
Two Sum
2015-03-29 21:55 by 笨笨的老兔子, 125 阅读, 收藏,
摘要:
给定一个数组和一个目标整数,已知这个目标整数一定等于给定数组中的某两个数字相加,求这两个数字在数组中的位置。Input: numbers={2, 7, 11, 15}, target=9Output: index1=1, index2=2 思路对这个数组做拷贝,然后进行排序,设定两个指针head和tail,如果 head+tail>target则tail-- head+tail twoSum(v... 阅读全文
Plus One
2015-03-17 09:21 by 笨笨的老兔子, 181 阅读, 收藏,
摘要:
大整数加法,只要加一就是一道模拟题,注意都是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 笨笨的老兔子, 136 阅读, 收藏,
摘要:
判断一个字符串是否是对称的 跳过所有非数字和字母,字母不分大小写 知道函数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 阅读, 收藏,
摘要:
输入一个整数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 阅读, 收藏,
摘要:
输入一个整数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 笨笨的老兔子, 125 阅读, 收藏,
摘要:
删除一个有序单链表的重复节点 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 笨笨的老兔子, 135 阅读, 收藏,
摘要:
去掉一个单链表的倒数第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 笨笨的老兔子, 218 阅读, 收藏,
摘要:
做一个二进制数字加法器 按照正常思路进行加法即可,设定一个进位变量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 笨笨的老兔子, 137 阅读, 收藏,
摘要:
爬楼梯,一次爬一层或两层,要爬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 笨笨的老兔子, 148 阅读, 收藏,
摘要:
存在两个单向链表,如果两者在某个节点相交合并,则返回交点,不相交则返回null。 思路:如果两个链表长度相等,则两个指针依次前进,到结尾之前如果遇到val值相等,则返回该节点。如果不相等,则长的那个链表先走若干步,使得剩下的步数与短的链表的步数相同。 注意点 空指针 由于是单链表,需要保存链表头 class Solution {public: ListNode *getIntersection... 阅读全文
Palindrome Number
2015-03-08 10:49 by 笨笨的老兔子, 165 阅读, 收藏,
摘要:
判断一个整数是否是回文数 注意点: 负数不是,因为多了一个负号 小心溢出,比较的时候不要将数字12345EDCBA变成ABCDE54321进行比较,而是将ABCDE5432和12345EDCB进行比较。 class Solution {public: bool isPalindrome(int x) { if (x =10) { reverse = rev... 阅读全文
Compare Version Numbers
2015-03-06 14:44 by 笨笨的老兔子, 228 阅读, 收藏,
摘要:
版本号比较 注意点 1.0 iVer2) { return 1; } if (iVer1 < iVer2) { return -1; } } return 0; }}; 来自为知笔记(Wiz) 阅读全文
Majority Element
2015-03-06 11:20 by 笨笨的老兔子, 128 阅读, 收藏,
摘要:
给定一个整数数组,其中有一个数字的出现次数大于总数组大小的一半。 思路一:快排,时间开销O(nlogn),空间开销O(logn),然后去数组的中间那个数字即可 思路二:采用打擂台的方法。只需要O(n)的时间开销,O(1)的空间开销。维护一个champion记录守擂人,count记录守擂人的生命数。然后依次遍历整个数组,如果数字相同则生命数+1,如果数字不同,则生命-1,如果生命降到0,则换上新的擂... 阅读全文
Reverse Integer
2015-03-06 09:46 by 笨笨的老兔子, 142 阅读, 收藏,
摘要:
将一个整数颠倒 基本思路:用一个标志位记录整数的符号,如果是负数转换成整数后颠倒,然后再乘以-1。本题主要考虑的是溢出。 注意点: 负数到正数的过程中存在溢出 数字颠倒后存在溢出 class Solution {public: int reverse(int x) { long long res = 0; long long num = 0; i... 阅读全文
Excel Sheet Column Number
2015-03-05 21:13 by 笨笨的老兔子, 204 阅读, 收藏,
摘要:
给出Excel表格里一列的编号,有A-Z组合而成,表示一个具体的数字。 示例: A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28解题:ABC=A∗262+B∗261+C∗260因此代码实现为: class Solution {public: int titleToNumber(string s) ... 阅读全文
Factorial Trailing Zeroes
2015-03-05 21:00 by 笨笨的老兔子, 144 阅读, 收藏,
摘要:
求一个整数n的阶乘后面有几个0思路:0肯定是由5*2=10得到,2的个数肯定远大于5,所以只要数一下n的阶乘的因式分解里有几个5即可。classSolution{public:int trailingZeroes(int n){int count =0;while(n){ count += n /5... 阅读全文
Rotate Array
2015-03-05 14:39 by 笨笨的老兔子, 155 阅读, 收藏,
摘要:
将一个长度为n的数组循环右移k次 注意点: k有可能大于n,需要取余。 需要考虑空间开销,存在空间开销为O(1)的解法 需要考虑时间开销 比较巧妙的方法是利用STL内置的reverse函数,做三次即可。举个例子:array[7]={1,2,3,4,5,6,7},n=3 7,6,5,4,3,2,1 5,6,7,4,3,2,1 5,6,7,1,2,3,4 代码实现比较简单: class Sol... 阅读全文
Borland C++ Builder 6.0安装指南
2015-03-05 10:15 by 笨笨的老兔子, 10339 阅读, 收藏,
摘要:
下载链接:http://pan.baidu.com/share/link?shareid=2552942324&uk=1260508576将下载的安装光盘文件加载到虚拟光驱后,打开这里AUTORUN.EXE为安装文件,KEYGEN.EXE为注册机。笔者选择中文安装 下一步之后需要填写序列号,打开注册机,点击Generate按钮,将生成序列号填入框内即可一路下一步,不需要做任何修改,安装过程会报错,... 阅读全文
ZigZag Conversion
2015-03-05 09:46 by 笨笨的老兔子, 332 阅读, 收藏,
摘要:
将一个字符串按照ZIGZAG方式打印,举例说明 ///nRows:2///1, 3, 5 step: 2///2, 4, 6 step: 2//////nRows:3///1, 5, 9 step: 4///2, 4, 6, 8, 10 step:2 2///3, 7, 11 step: 4////... 阅读全文
Pow(x, n)
2015-03-05 09:45 by 笨笨的老兔子, 222 阅读, 收藏,
摘要:
计算X的N次 class Solution {public: double pow(double x, int n) { }};注意点 n可能是负数 n可能是0 性能优化 考虑x13=x8∗x4∗x1即将13的二进制表示为1101。我们只需要求出x的1、2、4、8……32次,最多16次乘法就可以得到任意xn0) { if(n&1 == 1) ... 阅读全文
浙公网安备 33010602011771号