摘要:
55. 跳跃游戏 给定一个非负整数数组nums,你最初位于数组的 第一个下标 。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标。 输入:nums = [2,3,1,1,4] 输出:true 解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 阅读全文
摘要:
122. 买卖股票的最佳时机 II 给定一个数prices,其中prices[i]是一支给定股票第i天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 输入: prices = 阅读全文
摘要:
单例模式 意图 确保一个类只有一个实例,并提供该实例的全局访问点。 类图 使用一个私有构造函数、一个私有静态变量以及一个公有静态函数来实现。 私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量。 实现 (一)懒汉式-线程不安全 public class Si 阅读全文
摘要:
53. 最大子序和 给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 输入:nums = [-2,1,-3,4,-1,2,1,-5,4] 输出:6 解释:连续子数组 [4,-1,2,1] 的和最大,为 6 输入:nums = [1] 输出:1 思路 阅读全文
摘要:
376. 摆动序列 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。 例如,[1, 7, 4, 9, 2, 5]是一个 摆动序列 ,因为差值(6, -3, 5, -7, 3)是正负交 阅读全文
摘要:
什么是贪心 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 什么时候用贪心 使用贪心没有什么固定策略或者套路,需要靠自己手动模拟,如果模拟可行,就可以试一试贪心策略,如果不可行,可能需要动态规划。 验证可不可以用贪心算法最好的策略就是举反例,如果想不到反例,那么就可以试一试贪心。 贪心没有套 阅读全文
摘要:
37. 解数独 编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次 数字 1-9 在每一列只能出现一次 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次 数独部分空格内已填入了数字,空白格用 '.' 表示 示例: 输入:boar 阅读全文
摘要:
47. 全排列 II 给定一个可包含重复数字的序列nums,按任意顺序返回所有不重复的全排列。 输入:nums = [1,1,2] 输出: [[1,1,2], [1,2,1], [2,1,1]] 输入:nums = [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1 阅读全文
摘要:
46. 全排列 给定一个不含重复数字的数组nums,返回其所有可能的全排列 。你可以按任意顺序返回答案。 输入:nums = [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 输入:nums = [0,1] 输出:[[0,1], 阅读全文
摘要:
491. 递增子序列 给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是 2 。 输入:[4, 6, 7, 7] 输出:[[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7], [4,7,7] 阅读全文