leetcode
Jellyqin
这个作者很懒,什么都没留下…
展开
-
53 最大子序列 动态规划
动态规划定义当前最大连续子序列和cur_sum=0cur_sum=0,最大子序和res=nums[0]res=nums[0],数组长度nn对数组进行遍历,对于nums[i]nums[i],存在两种情况:若当前最大连续子序列和cur_sum>0cur_sum>0,说明cur_sumcur_sum对后续结果有着正向增益,即能使后续结果继续增大,则继续加和cur_sum=cur_sum...原创 2019-12-09 16:49:58 · 172 阅读 · 0 评论 -
45 跳跃游戏2 贪心算法
贪心规律主要是比较两个位置,即在这一点跳一步的位置和在这一点跳num[i]步的位置算法思路设置current_max_index 为当前可达的最远位置(部分最优)pre_max_max_index 为遍历各个位置过程中,各个位置能达到的最远位置res 为最少跳跃次数利用i遍历nums数组,如超过cur_max_index 则res加1, cur_max_index = pre_max_...原创 2019-11-27 19:59:14 · 222 阅读 · 0 评论 -
415 字符串相加
设定 i,j 两指针分别指向 num1,num2 尾部,模拟人工加法;计算进位: 计算 carry = tmp // 10,代表当前位相加是否产生进位;添加当前位: 计算 tmp = n1 + n2 + carry,并将当前位 tmp % 10 添加至 res 头部;索引溢出处理: 当指针 i或j 走过数字首部后,给 n1,n2 赋值为 00,相当于给 num1,num2 中长度较短的数字前...原创 2019-11-27 19:11:43 · 111 阅读 · 0 评论 -
42 接雨水 双指针
对于一个较低的坑来说,其储水量高度取决于左侧最高柱与右侧最高柱的较小高度可以用两个指针,分别从左右两边往中间逼近,左侧或者右侧的储水量只取决于当前一侧的高度差if len(height) ==0: return 0left,right = 0,len(height)-1left_max, right_max = height[left], height[right]r= 0wh...原创 2019-11-26 21:44:09 · 156 阅读 · 0 评论 -
41缺失的第一个正数 桶排序
桶排序:一个萝卜一个坑,没有坑的既是异类每个数都有对应的index对应,如果超过index或者这个数是负数,则是异类if not nums: return 1size = len(nums)for i in range(size): while (0<nums[i]<=n and nums[i]!=nums[nums[i]-1]): nums[n...原创 2019-11-26 21:19:32 · 85 阅读 · 0 评论 -
组合总和 2 回溯法40
思路:和39题的区别是,不能重复调用给定的元素自身,和上一题的相同点是,都不可以有重复解回溯法最主要的两点,一点是类似于递归,如果符合当前条件就继续继续进行下去,如果不符合则终止,跳到上一循环,同时对这一循环中的某些已经改变的量还原。这题为了避免重复调用某个元素,需要做一个判断,如目标list:[1,2,2,2,5] , target = 5若1,2,2(前两个2)已经实现,返回上一循环...原创 2019-11-25 20:33:37 · 120 阅读 · 0 评论 -
39 组合总和 回溯法
思路:https://leetcode-cn.com/problems/combination-sum/solution/hui-su-jian-zhi-jian-zhi-hou-9394zhu-xing-jie-shi-/回溯法+排序剪枝为了对算法进行剪枝处理,首先对candidatescandidates排序特判,若candidatescandidates为空,则返回[][]回溯函数...原创 2019-11-25 20:04:18 · 120 阅读 · 0 评论 -
leetcode 36,37,验证数独,解数独,回溯法
关键词:回溯法个人理解:对某个问题加上限值条件,如果在进行到某步发现无法在有限制条件下做出,则重新回到某一步重新开始测试其它方案(数值)。from collections import defaultdictclass Solution: def solveSudoku(self, board): """ :type board: List[List[...原创 2019-11-23 20:50:38 · 150 阅读 · 0 评论