- 博客(17)
- 收藏
- 关注
原创 927. Three Equal Parts
题目链接927. Three Equal Parts题目意思把一个只含有1和0的数组成3分,每分二进制表示的数相同题目解答计算1的数量count,如果 count % 3 != 0 ,说明分不了计算每个part1的数量 count =/ 3找初始1的位置 start找第 count + 1 个1 的位置mid找第 2 * count + 1 个1的位置 end匹配...
2019-02-11 09:55:01 181
原创 contest123
Add to Array-Form of Integer题目连接 Add to Array-Form of Integer题目解答对数组A从个位依次遍历,对k同样从个位遍历,两者相加 public List<Integer> addToArrayForm(int[] A, int K) { List<Integer> res = new...
2019-02-10 15:47:15 163
原创 897. Increasing Order Search Tree
题目链接 897. Increasing Order Search Tree题目意思题目让我们按数字的递增顺序把树展平。题目解答用一个全局变量pre当作前一个展好的节点,用dfs分治思想,先展好root左边部分,在处理好当前节点,最后dfs处理右部分节点。 TreeNode pre = null; public TreeNode increasingBST(...
2019-02-10 08:29:22 104
原创 502. IPO
题目链接 502. IPO题目意思我们有初始资本 w,让我们最多进行k次交易,问最多能得到多少资本。交易的最小资本为Capital,收益为Profits。题目解答由于能进行交易的次数是有限的,所以我们尽量去做收益最大的项目,所以用最大队列max保存获得的收益,做项目时取最大值就行。我们每进行一个项目,资本就会增加,交易就会增多,用最小队列min保存需要资本。 pub...
2019-02-09 10:29:29 156
原创 java8 新特性
java语言Lambda 表达式 (可以封装一种行为,并把行为传给其他代码),有以下几种形式步骤 1 定义行为的接口 2 Lambda 表达式实现接口Lambda 表达式规范 (变量类型1 变量1,变量类型2 变量2) -&amp;gt; {代码;}public class Main { public static void main(String[] args) { ...
2019-02-08 16:11:21 134
原创 213. House Robber II
题目链接 213. House Robber II题目意思一个数组代表房屋物品的价值,其中数组首位相连,我们要窃取房屋中的物品达到最大值,不能同时窃取相邻房屋的物品。题目解答为了做到不同时窃取第一个和最后一个,我们分两次计算。 public int rob(int[] nums) { if (nums.length == 0) return 0;...
2019-02-08 11:05:03 152
原创 850. Rectangle Area II
题目链接850. Rectangle Area II题目意思给出一些矩形,这些矩形可能会重叠,求矩形所围成图形的面积。题目解答寒给出的一种解法步骤延y轴扫描y = 0, 底 3 = 3 - 0, 高 y = 0,y = 1, 底 2 = 2 - 0, 高 y = 1, 面积 前底 3 x (当前高1 - 前高0) = 3;y = 2, 底 2 = 2 ...
2019-02-07 17:21:36 388
原创 515. Find Largest Value in Each Tree Row
题目连接这道题让我们求一棵树的每层的最大值,我们用深度优先遍历遍历树的每一层找到最大值就可以了。 public List<Integer> largestValues(TreeNode root) { List<Integer> res = new ArrayList<>(); if(root == null) r...
2018-07-18 23:52:17 85
原创 513. Find Bottom Left Tree Value
题目连接这道题让我们求树的最底层的最左边的元素。解答: 像这种求树的一层中的某个元素的题一般用bps。我们用val记录每一层的第一个元素,用bps遍历到最后,val就是最后一层的第一个元素。 public int findBottomLeftValue(TreeNode root) { LinkedList<TreeNode> q = new ...
2018-07-15 23:53:09 99
原创 871. Minimum Number of Refueling Stops
题目链接这道题要我们去一个目的地,给我们几个加油站,最开始拥有的油数量,求去目的地最少加多少次油。解答: 求最值一般用动态规划。 1 状态 dp[i] 加 i次油最大能到的地方 2 状态转移方程 dp[i + 1] = max(dp[i + 1], dp[i] + arr[i]) arr[i]表示本次加油 3 初始 dp[0] = startFuel ...
2018-07-15 12:07:05 387
原创 lintcode 1467. Ask For Cooling Time
题目链接玩游戏的童鞋都知道,放游戏技能需要冷却时间,这道题就给我们一些技能的释放顺序,让我们计算完全释放这些技能所需要时间。解答: 我们用res表示当前时间,为了释放当前技能, 1 如果以前没按过当前技能,那就按当前技能吧res++,用map记录按当前技能下一个最早时间为res + 冷却时间 + 1。 2 如以前按过当前技能,看是否过了冷却时间,如果过了冷却,那就按...
2018-07-14 11:32:32 214
原创 504. Base 7
题目链接这道题让我们把一个数转换成7进制,一般我们进行多进制的转换就是从地位开始, 如上图所示,100的10进制转换为7进制,我们记录每次的余,就得到最后的结果202。解答: 1 取数值的符号并记录 2 每次除前取余并加到结果中 3 把符号加入结果 public String convertToBase7(int num) { if (num == 0...
2018-07-13 00:01:46 154
原创 517. Super Washing Machines
题目链接这道题给我们一个数组,我们可以向相邻的位置移动一个元素,只要移动不冲突。让我们求为了使数组平均,最少移动次数。解答: 1 如果衣服总数除洗衣机总数,余数不为0,则洗衣机中的衣服数不可能平均。 2 计算前缀和数组sum[i]表示前i索引元素和。 3 为了得到最后的平均,计算每个位置需要移动的衣服数。 4 cl表示为了使索引i左边的平均,左边的还需要衣服数。cl...
2018-07-12 00:06:02 146
原创 525. Contiguous Array
题目连接这道题给我们一个数组,数组只包括0和1,让我们找出1的个数和0的个数相等的连续子数组,这样的数组可能有多个,让我们返回最长子数组的长度解答: 这道题让我们求1的个数和0的个数相等的连续子数组,如果用-1表示0,1还用1表示,1的个数和0的个数相等表示这个子数组的和为0。用sum表示数组的前i个元素的和,如果从i+1到j的子数组的和为0,则i位置的sum值和j位置的sum值相同,子数...
2018-07-10 23:58:09 88
原创 526. Beautiful Arrangement
题目链接这道题定义了一个概念--优美排列,也就是从1到N的N个数的排列,任意位置符合2个条件中的任意一个。假设数组A为N个数的排列,数组的i索引从1开始。条件:1、 A[i] % i == 0 2、 i % A[i] == 0解答: 可以用递归找出N个数的所有排列,并在最后检测符合条件的排列,并计算符合条件排列的个数,但这样复杂度比较高,为N!。 我们可以用剪枝减小算法复杂度,...
2018-07-10 00:17:33 254
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人