2013年9月29日

Search a 2D Matrix

摘要: 第一次两次二分。思路比较简单,但是要注意边界条件。 bool searchMatrix(vector > &matrix, int target) { // Start typing your C/C++ solution below // DO NOT write int main() function int m = matrix.size(); if(m == 0) return false; int n = matrix[0].size(); if(n == 0) ... 阅读全文

posted @ 2013-09-29 11:05 waruzhi 阅读(189) 评论(0) 推荐(0) 编辑

Minimum Path Sum

摘要: 使用带记录的递归。int result[500][500]; int min(int a, int b){ if(a > &grid, int m, int n){ if(result[m][n] != -1) return result[m][n]; int tmp = 0; int height = grid.size(), width = grid[0].size(); if(m == 1){ int i; for(i = width-n; i ... 阅读全文

posted @ 2013-09-29 10:33 waruzhi 阅读(186) 评论(0) 推荐(0) 编辑

Remove Duplicates from Sorted Array II

摘要: 和I相比,最多可有两个重复的数字,所以在I的基础上,增加一个bool变量isFirst,如果只出现一次的话,就可以继续往后移一位,否则等待出现下一个不同的值时才将新的值写入。注意边界条件(老忘真不好,心中默念一百遍!)。 int removeDuplicates(int A[], int n) { // Start typing your C/C++ solution below // DO NOT write int main() function if(n <= 0) return 0; int resul... 阅读全文

posted @ 2013-09-29 09:49 waruzhi 阅读(139) 评论(0) 推荐(0) 编辑

Best Time to Buy and Sell Stock

摘要: 一次遍历,计算每支股票减掉前面的最小值时的值,然后更新可以获得的最大收益,复杂度为O(n)。注意边界条件的判断。 int maxProfit(vector &prices) { // Start typing your C/C++ solution below // DO NOT write int main() function if(prices.size() == 0 || prices.size() == 1) return 0; int max = INT_MIN, min = prices[0]; ... 阅读全文

posted @ 2013-09-29 09:23 waruzhi 阅读(133) 评论(0) 推荐(0) 编辑

Remove Nth Node From End of List

摘要: 居然一次AC了,虽然是道极水的题。考虑好一些特殊条件,比如n小于等于0, root等于NULL即可。 ListNode *removeNthFromEnd(ListNode *head, int n) { // Start typing your C/C++ solution below // DO NOT write int main() function if(n next; } if(n > len) return head; if(n == len) r... 阅读全文

posted @ 2013-09-29 09:12 waruzhi 阅读(147) 评论(0) 推荐(0) 编辑

导航