随笔分类 -  LeetCode

摘要:思路1 这个思路比较简单,就类似于图的遍历算法,用递归来解。递归的基线条件是到达目的地或者是走到了边界。递归的条件是机器人从一个点只能往下走或者往右走,即x = x + 1或者y = y+1。 到达某一格的路径数量等于它的上面和左边的路径数之和。 C语言实现 但是上面代码在LeetCode上运行,会 阅读全文
posted @ 2019-09-12 18:37 尚修能的技术博客 阅读(176) 评论(0) 推荐(0)
摘要:《算法图解》书 动态规划章节读书笔记 1 对于背包问题,可以偷商品的一部分吗? 答:不可以,使用动态规划问题时,要么考虑拿走整件商品,要么考虑不拿,而没法判断该不该拿走商品的一部分。 2 动态规划能处理相互依赖的情况吗? 答:不可以,仅当每个子问题都是离散的,即不依赖于其他子问题时,动态规划才管用。 阅读全文
posted @ 2019-09-12 10:06 尚修能的技术博客 阅读(182) 评论(0) 推荐(0)
摘要:题目描述 题目思路1 这道题LeetCode上的标签是Dynamic programming,即动态规划,第一个思路就是用动态规划来解。 首先维护一个二维数组dp[j][i]。这个动态数组表示[j, i]之间是否有回文。当j = i时,只有一个字符,肯定是回文,当 j + 1 = i 时,说明是相邻 阅读全文
posted @ 2019-09-12 09:26 尚修能的技术博客 阅读(119) 评论(0) 推荐(0)
摘要:题目描述 题目思路: 这道题要求的是最长的子串而不是最长的子序列,在LeetCode上也给了提示 Note that the answer must be a substring, "pwke" is a subsequence and not a substring. 先不考虑代码的问题,比如有一 阅读全文
posted @ 2019-09-11 09:31 尚修能的技术博客 阅读(108) 评论(0) 推荐(0)
摘要:题目描述: 题目思路: 这道题目比较简单,一开始我的思路是把两个链表里存储的数变成int类型,然后两个int类型相加,在把加和sum分解成个位,十位,百位,然后把分解之后的数据再插入到链表中即可,所以一开始的代码是这样的: 提交之后发现,LeetCode的测试数据是 这样的话,不论是用int类型还是 阅读全文
posted @ 2019-09-11 08:00 尚修能的技术博客 阅读(177) 评论(0) 推荐(0)
摘要:该题目进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。 code: int maxSubArray(int nums, int numsSize) { int pNumber = (int )malloc(numsSize sizeof(int)); pNumber[0 阅读全文
posted @ 2019-04-13 17:12 尚修能的技术博客 阅读(136) 评论(0) 推荐(0)
摘要:这应该是比较简单的一道题了,代码如下 因为这个题目是查找一个有序数组中元素的位置,考虑可以使用二分法。修改代码后再次提交 注意以上实现方式有一个好处,就是当循环结束时,如果没有找到目标元素,那么low一定停在恰好比目标大的index上,high一定停在恰好比目标小的index上。 二分查找是一个非常 阅读全文
posted @ 2019-03-12 19:45 尚修能的技术博客 阅读(217) 评论(0) 推荐(0)
摘要:思路:这道题让我们求两数相除,而且规定我们不能用乘法,除法和取余操作,那么我们还可以用另一神器 位操作Bit Operation ,思路是,如果被除数大于或等于除数,则进行如下循环,定义变量t等于除数,定义计数p,当t的两倍小于等于被除数时,进行如下循环,t扩大一倍,p扩大一倍,然后更新res和m。 阅读全文
posted @ 2019-03-08 11:00 尚修能的技术博客 阅读(2610) 评论(0) 推荐(0)
摘要:第一次提交 int strStr(char haystack, char needle) { int length1 = strlen(haystack); int length2 = strlen(needle); int i = 0; int j = 0; int index = 0; int 阅读全文
posted @ 2019-03-07 21:55 尚修能的技术博客 阅读(181) 评论(0) 推荐(0)
摘要:``` bool isValid(char s) { int length = 0; int i = 0; int index = 0; length = strlen(s); printf("length = %d",length); if(length == 0) { return true; 阅读全文
posted @ 2019-03-06 16:29 尚修能的技术博客 阅读(114) 评论(0) 推荐(0)
摘要:``` int romanToInt(char s) { int I = 1; int V = 5; int X = 10; int L = 50; int C = 100; int D = 500; int M = 1000; int result = 0; int index = 0; int 阅读全文
posted @ 2019-03-05 20:31 尚修能的技术博客 阅读(115) 评论(0) 推荐(0)
摘要:第一次提交 bool isPalindrome(int x) { int max = 2147483647; int min = 2147483648; int tempx = x; if(x max / 10 || result 阅读全文
posted @ 2019-03-04 16:16 尚修能的技术博客 阅读(95) 评论(0) 推荐(0)
摘要:第一次提交 错误: 第二次提交 错误 这里错误的原因是,当输入 2147483648时,使用 再次给x赋值时,超出了int类型的最大范围,int类型的最大范围是2147483647 第三次提交: 错误: 原因:我一开始的想法是将整数转化为字符串,然后将字符串倒转过来,再组成整数即可,但是整数转化为字 阅读全文
posted @ 2019-03-04 16:00 尚修能的技术博客 阅读(1093) 评论(0) 推荐(0)
摘要:记录被LeetCode虐的日子 第一种方法:使用枚举 上面代码存在一个BUG,当提交到leetcode时,testcase为{3,2,4},target = 6时可以测出这个BUG。修改后的代码为 阅读全文
posted @ 2019-01-12 20:45 尚修能的技术博客 阅读(200) 评论(0) 推荐(0)