diff --git a/Week 08/id_076/LeetCode_300_076.java b/Week 08/id_076/LeetCode_300_076.java new file mode 100644 index 000000000..3574374a8 --- /dev/null +++ b/Week 08/id_076/LeetCode_300_076.java @@ -0,0 +1,27 @@ +/** + * 最长上升子序列 + * 1.暴力解法,采用递归实现 + * 2.增加递归中间计算缓存 + * + */ +public class LeetCode_300_076 { + + public int lengthOfLIS(int[] nums) { + return lengthofLIS(nums, Integer.MIN_VALUE, 0); + } + + public int lengthofLIS(int[] nums, int prev, int curpos) { + if (curpos == nums.length) { + return 0; + } + int taken = 0; + if (nums[curpos] > prev) { + taken = 1 + lengthofLIS(nums, nums[curpos], curpos + 1); + } + int nottaken = lengthofLIS(nums, prev, curpos + 1); + return Math.max(taken, nottaken); + } +} + + + diff --git a/Week 08/id_076/LeetCode_541_076.java b/Week 08/id_076/LeetCode_541_076.java new file mode 100644 index 000000000..0bd7ba85c --- /dev/null +++ b/Week 08/id_076/LeetCode_541_076.java @@ -0,0 +1,39 @@ +/** + * 翻转字符串 + * + */ +public class LeetCode_541_076 { + + public String reverseStr(String s, int k) { + char[] s_arr = s.toCharArray(); + + for(int i = 0;i < s_arr.length;){ + //反转k + if(i + k >= s_arr.length){ + reverseArr(s_arr,i,s_arr.length - 1); + break; + }else{ + reverseArr(s_arr,i,i + k-1); + } + i += k; + + //跳过k + if(i + k >= s_arr.length){ + break; + } + i += k; + } + return String.valueOf(s_arr); + } + + public void reverseArr(char[] arr , int from , int end){ + for(int i = from , j = end; i < j;i++ , j--){ + char t = arr[i]; + arr[i] = arr[j]; + arr[j] = t; + } + } +} + + +