LeetCode
Jacobbzx
这个作者很懒,什么都没留下…
展开
-
LeetCode 1240. Tiling a Rectangle with the Fewest Squares
先说说一个 cheat 程序周赛的时候第一个思路就是 dp… 直到看到了 Example 3,发现不能用 dp。。但看了看 m 和 n 的边界条件,感觉 Example 3 应该是唯一的一个 special case, 就直接写了 dp, 最后竟然真的就 Accepted 了。。。思路很简单,就直接贴代码了class Solution { public int tilingRecta...原创 2019-10-27 16:06:39 · 1162 阅读 · 2 评论 -
LeetCode 1239. Maximum Length of a Concatenated String with Unique Characters
思路这道题维护一个集合 Set,从索引0开始遍历,每次遍历判断集合里的每个 String 和当前的字符串 arr[i] 能否组成新的无重复字符的字符串,若能,添加到一个临时集合中。每一次遍历后,要将这个临时集合添加到总集合 Set 中,并把当前字符串 arr[i] 也添加到 Set 中,以便下一次的遍历。一些细节位图为了简单表示两个字符串是否有重复,考虑到只有小写字母,我们用一个 int ...原创 2019-10-27 15:21:20 · 492 阅读 · 0 评论 -
LeetCode 1238. Circular Permutation in Binary Representation
思路题目要求给出任意一种全排列数组。我们可以设计一种算法,每次改变一个比特位,从而生成一个新的数。这个具体的生成算法就是,从最后一位尝试改变,如果改变后的数之前遍历到了,则撤回改变,并尝试下一个数。而其中判决生成的数之前是否已经遍历过了,需要一个 HashMap 记录,这里我们直接用 count 数组记录就行。 public int next(int a, int[] count) {...原创 2019-10-27 15:06:11 · 165 阅读 · 0 评论 -
LeetCode 1235. Maximum Profit in Job Scheduling
初始想法这道题第一反应是用 dp 来做。首先是创建一个 class Job,里面有三个属性 start,end,profit。class Job{ int start; int end; int profit; public Job(int start, int end, int profit) { this.start = start;...原创 2019-10-20 14:06:15 · 739 阅读 · 0 评论 -
LeetCode 1231. Divide Chocolate
这道题一开始没啥思路啊。。硬着头皮写了个递归最后不出意外的超时了。。最后看了解答,发现特别简单,直接二分法。。。二分法对结果进行二分,最小值为0,最大值为平均数。每次二分判断中间值满不满足条件,最后就得到了答案。。。。能用这种方法的关键点在于判断一个值是不是满足特别简单。所以,一旦做过类似的题,应该马上就会想到了。class Solution { public int max...原创 2019-10-20 14:30:03 · 866 阅读 · 1 评论 -
LeetCode 1230. Toss Strange Coins
一开始觉得是计算出一个数学公式。。但肯定不可能那方法肯定是 dp 了。DPdp 数组是一个二维数组,两个坐标分别代表次数和当前是第几个硬币。这一点先想想用递归怎么做,再寻找递归中的关键参数,转化成 dp 的坐标即可。最后要的到结果是 dp[target][N-1]。已知项为 dp 第 0 列的所有项。即 double[][] dp = new double[target+...原创 2019-10-20 14:25:15 · 1043 阅读 · 2 评论 -
LeetCode 1234. Replace the Substring for Balanced String
最开始把题看错了,注意题目要求返回的是最小子串的长度,而不是要修改的次数。。。思路这道题基本的思路是滑动窗口。首先统计每个字符出现的次数,之后相加得到总和,总和除以 4 得到每个字符应该出现的次数。用双指针 left 和 right ,开始都指向 0。right 开始向右移动,直到满足条件。然后 left 向右移动,直到不满足条件。然后 right 又继续向右移动,知道满足条件…… 这样...原创 2019-10-20 14:16:08 · 150 阅读 · 0 评论