“Subset/Permutation/CombinationSum”
30 Mar 2020正在制作中/Working
发现写代码,刷题,做项目,其实是一个剪枝的过程。 面对一个问题,作为新手的时候不知道怎么做的原因很多,其中一个就是方法的选择范围太广了。用什么框架,用什么库,用什么数据结构,这些都是一堆问题。 熟练了之后,再遇到问题就能迎刃而解了,基本上是因为你已经知道了哪条路走起来最方便,你不会再开始纠结哪条路更好或者哪条路不好,你的脑袋变简单了。w s s
看了下LeetCode刷题记录,开始刷题已经一年了,但是到现在如果遇到不明确/不熟悉的新题(eg:周赛),还是有很大的可能做不出来,不过做不出来的原因和一年前刚开始刷LeetCode已经有变化了。
一年前刚开始刷题的时候(也是刚开始学会写代码的时候),对数据结构有哪些都没什么了解,Java的API用的也不熟练,当时很多Easy题看答案都没办法理解,基本上全靠背。。。
一年过去了,对数据结构的掌握比以前要好不少,基本上遇到一道题能想出来大概可以用什么样的数据结构来解决。但是编程能力还是有问题,或者说是思维上还是不够严谨?比如说“星球坠落”那道题,看到题目的时候就想到了应该用Stack来解决不同方向的星球碰撞问题,但是两个星球相遇的时候,用什么样的逻辑来解决,思路上还不是很清晰,最后还是要靠看答案才能写出来,这应该是逻辑上思考的不够深入?
拿一年前不会做,但是现在可以比较流畅的做出来的题目来比较的话,这一年对刷题的领悟大概有三点:
但是实际上现在困扰我的问题还有很多,比如String,Array这种题目(eg: 字符串匹配,最长子数列的和等等等),真的是几乎每一道Hard我都无能为力,都要看答案之后才知道要往哪个方向努力,Recursion的题目也要靠不同的练习来保持手感,看答案很容易看懂,但是很难自己想Recursion的写法。最近的计划是复习一下算法书中的基本内容,过段时间再来看看,以前不会做的题目是不能能熟练的做出来。
ls:
Stop at either end level dir or file name, if it is file name, just return the file name. Otherwise if it is a dir, get its sub-dirs and add them into output;
Mkdir:
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.
(i.e., [0,1,2,4,5,6,7] might become [4,5,6,7,0,1,2]).
You are given a target value to search. If found in the array return its index, otherwise return -1.
You may assume no duplicate exists in the array.
Your algorithm’s runtime complexity must be in the order of O(log n).
Example 1:
Input: nums = [4,5,6,7,0,1,2], target = 0 Output: 4 Example 2:
Input: nums = [4,5,6,7,0,1,2], target = 3 Output: -1
public int searchTarget(int[] nums, int target) {
if (nums == null || nums.length == 0) return -1;
int start = 0, end = nums.length - 1;
while (start + 1 < end) {
int mid = (end - start) / 2 + start;
if (nums[mid] == target) return mid;
if (nums[mid] > nums[end]) {
if (nums[start] <= target && target <= nums[mid]) {
end = mid;
} else
start = mid;
} else {
if (nums[mid] <= target && target <= nums[end]) {
start = mid;
} else
end = mid;
}
}
if (nums[start] == target) return start;
if (nums[end] == target) return end;
return -1;
}