leetcode
Desperate_gh
这个作者很懒,什么都没留下…
展开
-
归并排序demo
public class Merge_sort{ public static void main(String[] args) { // TODO Auto-generated method stub int[] num = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0}; sort(num, 0, num.length - 1); for (int i = 0; i < num.length; i++) { System.out.println(num[i])原创 2021-09-14 11:32:26 · 245 阅读 · 0 评论 -
并查集问题
不带权并查集问题class Solution { public boolean equationsPossible(String[] equations) { int[] parent = new int[26]; for (int i = 0; i < 26; i++) { parent[i] = i; } for (String s : equations) { if (s原创 2021-07-04 17:31:12 · 337 阅读 · 0 评论 -
单调栈问题
暴力解法:(会超时)class Solution { public int largestRectangleArea(int[] heights) { if (heights == null || heights.length == 0) { return 0; } int len = heights.length; if (len == 1) { return heights[0]..原创 2021-05-26 19:38:43 · 127 阅读 · 0 评论 -
组合问题
1. 选取 k 个数回溯法:以选取的个数作为条件跳出class Solution { public static void backtracking(List<Integer> combineList, List<List<Integer>> combinations, int start, int k, int n) { if (k == 0) { combinations.add(new ArrayList<>(原创 2021-05-17 15:45:45 · 296 阅读 · 0 评论 -
股票问题总结
只能买卖一次可以多次买卖只能交易 2 次可以交易 k 次买卖含冷冻期买卖需要手续费原创 2021-05-06 17:06:19 · 180 阅读 · 0 评论 -
剑指offer-2.25-58.2
class Solution { public String reverseLeftWords(String s, int n) { return s.substring(n, s.length()) + s.substring(0, n); }}class Solution { public String reverseLeftWords(String s, int n) { int len = s.length(); cha.原创 2021-02-25 17:09:43 · 103 阅读 · 0 评论 -
力扣-1.12-28
class Solution { public int strStr(String haystack, String needle) { int len1 = haystack.length(); int len2 = needle.length(); int i, j; for (i = 0; i <= (len1 - len2); i++) { for (j = 0; j < len2; j++.原创 2021-01-12 09:53:27 · 90 阅读 · 0 评论 -
力扣-1.11-628
class Solution { public int maximumProduct(int[] nums) { int min1 = Integer.MAX_VALUE, min2 = Integer.MAX_VALUE; int max1 = Integer.MIN_VALUE, max2 = Integer.MIN_VALUE, max3 = Integer.MIN_VALUE; for (int n: nums) { .原创 2021-01-11 10:25:54 · 71 阅读 · 0 评论 -
力扣-1.11-238
class Solution { public int[] productExceptSelf(int[] nums) { int length = nums.length; int[] L = new int[length]; int[] R = new int[length]; L[0] = 1; for (int i = 1; i < length; i++) { L[i] = nu.原创 2021-01-11 09:48:30 · 74 阅读 · 0 评论 -
力扣-1.7-326
class Solution { public boolean isPowerOfThree(int n) { if (n < 1) { return false; } while ((n % 3) == 0) { n /= 3; } return n == 1; }}原创 2021-01-07 16:22:12 · 77 阅读 · 0 评论 -
力扣-1.7-367
提示:class Solution { public boolean isPerfectSquare(int num) { int subNum = 1; while (num > 0) { num -= subNum; subNum += 2; } return num == 0; }}原创 2021-01-07 11:47:58 · 74 阅读 · 0 评论 -
力扣-1.7-169
方法一:class Solution { public int majorityElement(int[] nums) { Arrays.sort(nums); return nums[nums.length / 2]; }}方法二:class Solution { public int majorityElement(int[] nums) { int cnt = 0, majority = nums[0]; .原创 2021-01-07 10:49:30 · 69 阅读 · 0 评论 -
力扣-1.17-462
方法一:class Solution { public int minMoves2(int[] nums) { Arrays.sort(nums); int l = 0, h = nums.length - 1; int move = 0; while (l < h) { move += nums[h] - nums[l]; h--; l++; .原创 2021-01-07 10:28:01 · 76 阅读 · 0 评论 -
力扣-1.5-415
class Solution { public String addStrings(String num1, String num2) { int len1 = num1.length() - 1; int len2 = num2.length() - 1; int carry = 0; StringBuffer sb = new StringBuffer(); while (carry == 1 || len1 &g.原创 2021-01-05 14:08:38 · 69 阅读 · 0 评论 -
力扣-1.4-67
方法一:class Solution { public String addBinary(String a, String b) { int len1 = a.length(); int len2 = b.length(); int len = len1 <= len2 ? len1 : len2; a = new StringBuffer(a).reverse().toString(); b = new St.原创 2021-01-04 16:49:28 · 65 阅读 · 0 评论 -
力扣-12.31-172
方法一:O(n) 的时间复杂度因为只有 2 * 5 = 10 会在结尾产生一个 0 ,因此我们就计算阶乘中每一个数能被 2 除尽的次数,即能被分解出多少个 2 ,同理我们可以求出阶乘中每一个数可以被分解出多少个 5 ,然后取 2 和 5 的最少个数,就是最后结果中含有 10 的倍数,也即结尾有多少个 0 。class Solution { public int trailingZeroes(int n) { int fivecount = 0; for(int.原创 2020-12-31 11:50:53 · 84 阅读 · 0 评论 -
力扣-12.30-168
注意:对26及其倍数的处理class Solution { public String convertToTitle(int n) { StringBuffer sb = new StringBuffer(); while (n > 0) { int c = n % 26; if(c == 0){ c = 26; n--; ..原创 2020-12-30 20:45:35 · 162 阅读 · 0 评论 -
力扣-12.29-405
class Solution { public String toHex(int num) { if (num == 0) { return "0"; } char[] map = "0123456789abcdef".toCharArray(); StringBuffer sb = new StringBuffer(); while (num != 0) { int ..原创 2020-12-29 17:54:24 · 138 阅读 · 0 评论 -
力扣-12.29-504
class Solution { public String convertToBase7(int num) { if (num == 0) { return "0"; } int isNegative = 0; if (num < 0) { num = -num; isNegative = 1; } StringBuffer.原创 2020-12-29 17:01:58 · 104 阅读 · 1 评论 -
力扣-12.29-204
方法一:class Solution { public boolean isPrime(int x) { for(int i = 2; i <= Math.sqrt(x); i++) { if(x % i == 0) { return false; } } return true; } public int countPrimes(int n) {.原创 2020-12-29 15:56:10 · 118 阅读 · 0 评论 -
力扣-12.28-650
方法一:参考:https://leetcode-cn.com/problems/2-keys-keyboard/solution/zhi-you-liang-ge-jian-de-jian-pan-by-leetcode/理解为分解素数class Solution { public int minSteps(int n) { int ans = 0, d = 2; while (n > 1) { while (n % d == 0.原创 2020-12-28 15:04:29 · 134 阅读 · 0 评论 -
力扣-12.25-72
参考:https://leetcode-cn.com/problems/edit-distance/solution/bian-ji-ju-chi-by-leetcode-solution/class Solution { public int minDistance(String word1, String word2) { if (word1 == null || word2 == null) { return 0; } ..原创 2020-12-25 15:29:52 · 82 阅读 · 0 评论 -
力扣-12.24-583
转化为最长公共子序列class Solution { public int minDistance(String word1, String word2) { int len1 = word1.length(); int len2 = word2.length(); int[][] dp = new int[len1 + 1][len2 + 1]; for (int i = 1; i <= len1; i++) { .原创 2020-12-24 09:20:45 · 114 阅读 · 0 评论 -
力扣-12.23-188
参考:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-iv/solution/dong-tai-gui-hua-by-liweiwei1419-4/class Solution { public int maxProfit(int k, int[] prices) { if (prices == null || prices.length == 0) { return 0;..原创 2020-12-23 10:17:14 · 119 阅读 · 0 评论 -
力扣-12.22-123
class Solution { public int maxProfit(int[] prices) { if (prices == null || prices.length == 0){ return 0; } int n = prices.length; // f[i]表示买入min,卖出prices[i]时的利润 int[] f = new int[n]; // mi..原创 2020-12-22 16:37:27 · 72 阅读 · 0 评论 -
力扣-12.21-714
class Solution { public int maxProfit(int[] prices, int fee) { if(prices == null || prices.length == 0){ return 0; } int len = prices.length; int[][] dp = new int[len + 1][2]; dp[1][1] = -prices[0];..原创 2020-12-21 14:45:16 · 134 阅读 · 0 评论 -
力扣-12.20-309
分析:class Solution { public int maxProfit(int[] prices) { if(prices == null || prices.length == 0) { return 0; } int len = prices.length; int[][] dp = new int[len + 1][3]; dp[1][0] = -prices[0]; dp[1][1] = 0; dp[1][2] = 0; .原创 2020-12-20 14:28:21 · 126 阅读 · 0 评论 -
力扣-12.19-377
class Solution { public int combinationSum4(int[] nums, int target) { if(nums == null || nums.length == 0){ return 0; } int len = nums.length; int[] dp = new int[target + 1]; dp[0] = 1; for(..原创 2020-12-19 14:51:24 · 123 阅读 · 1 评论 -
力扣-12.18-139
类似第322题的第一种方法:外层循环是背包,内层循环是物品,需要注意的是和前几题不一样class Solution { public boolean wordBreak(String s, List<String> wordDict) { int len = s.length(); boolean[] dp = new boolean[len + 1]; dp[0] = true; for(int i = 1; i ..原创 2020-12-18 21:18:07 · 102 阅读 · 0 评论 -
力扣-12.17-518
class Solution { public int change(int amount, int[] coins) { if(coins == null) { return 0; } int len = coins.length; int[] dp = new int[amount + 1]; dp[0] = 1; for(int coin : coins) { for(int i = coin; i <= amount; i++) {..原创 2020-12-17 17:38:08 · 76 阅读 · 0 评论 -
力扣-12.17-322
提示:这是一个完全背包问题class Solution { public int coinChange(int[] coins, int amount) { if(coins == null || coins.length == 0 || amount == 0) { return 0; } int len = coins.length; int[] dp = new int[amount + 1]; Arrays.fill(dp, amount + 1)..原创 2020-12-17 15:50:52 · 138 阅读 · 0 评论 -
力扣-12.17-474
提示:转化为2维背包问题,对0和1的数量都有要求。class Solution { public int findMaxForm(String[] strs, int m, int n) { if(strs == null || strs.length == 0) { return 0; } int[][] dp = new int[m + 1][n + 1]; for(String str : strs) { int ones = 0,zeros = ..原创 2020-12-17 11:48:01 · 134 阅读 · 0 评论 -
力扣-12.14-494
参考:https://leetcode-cn.com/problems/target-sum/solution/dong-tai-gui-hua-si-kao-quan-guo-cheng-by-keepal/class Solution { public int findTargetSumWays(int[] nums, int S) { if(nums == null || nums.length == 0) { return 0; } int len = ..原创 2020-12-14 14:31:26 · 87 阅读 · 0 评论 -
力扣-12.10-416
提示:可以看成是 sum/2 的0-1背包问题方法一:(自己写的)class Solution { public boolean canPartition(int[] nums) { int sum = 0 , len = nums.length; for(int i = 0 ; i < len ; i++) { sum += nums[i]; } if(sum % 2 != 0) { return false; } int W = sum.原创 2020-12-10 21:18:27 · 66 阅读 · 0 评论 -
12.10-01背包问题
// W 为背包总体积// N 为物品数量// weights 数组存储 N 个物品的重量// values 数组存储 N 个物品的价值public int knapsack(int W, int N, int[] weights, int[] values) { int[][] dp = new int[N + 1][W + 1]; for (int i = 1; i <= N; i++) { int w = weights[i - 1], v = valu.原创 2020-12-10 20:04:30 · 122 阅读 · 1 评论 -
力扣-12.9-1143
动态规划:class Solution { public int longestCommonSubsequence(String text1, String text2) { int len1=text1.length(); int len2=text2.length(); int[][] dp=new int[len1+1][len2+1]; for(int i=1;i<=len1;i++) { for(int j=1;j<=len2;j++)..原创 2020-12-09 09:50:07 · 58 阅读 · 0 评论 -
2020-12.08-376
方法一:时间复杂度:O(n2)空间复杂度:O(n)up[i] 存的是目前为止最长的以第 ii 个元素结尾的上升摆动序列的长度。 down[i] 记录的是目前为止最长的以第 ii 个元素结尾的下降摆动序列的长度。class Solution { public int wiggleMaxLength(int[] nums) { if(nums==null) { return 0; } int len=nums.length; if(len<2) { ..原创 2020-12-08 11:46:26 · 97 阅读 · 0 评论 -
力扣-12.8-646
class Solution { // 根据点对的第一个数进行冒泡排序 public void sort(int[][] pairs) { for(int i=0;i<pairs.length-1;i++) { for(int j=i+1;j<pairs.length;j++) { if(pairs[i][0]>pairs[j][0]) { int p=pairs[i][0]; int q=pairs[i][1]; pairs[.原创 2020-12-08 10:06:23 · 103 阅读 · 0 评论 -
力扣-12.7-300
方法一:class Solution { public int lengthOfLIS(int[] nums) { if(nums==null || nums.length==0){ return 0; } int len=nums.length; int[] dp=new int[len]; dp[0]=1; for(int i=1;i<len;i++) { int temp=1; for(int j=0;j<i;j++) {.原创 2020-12-07 10:35:54 · 74 阅读 · 0 评论 -
力扣-12.6-91-no
class Solution { public int numDecodings(String s) { public static int numDecodings(String s) { if (s == null || s.length() == 0) { return 0; } int n = s.length(); int[] dp = new int[n + 1]; dp[0] = 1; dp[...原创 2020-12-06 18:32:58 · 85 阅读 · 0 评论