From 38daf3ac26767117ba85571e21a04509693d8c41 Mon Sep 17 00:00:00 2001 From: fanxb Date: Sat, 23 Mar 2024 20:51:02 +0800 Subject: [PATCH] add --- 5.leetcode/src/com/fanxb/common/Q121.java | 11 +++++ 5.leetcode/src/com/fanxb/common/Q33.java | 53 +++++++++++++++++++++++ 5.leetcode/src/com/fanxb/common/Q68.java | 36 +++++++++++++++ 3 files changed, 100 insertions(+) create mode 100644 5.leetcode/src/com/fanxb/common/Q33.java create mode 100644 5.leetcode/src/com/fanxb/common/Q68.java diff --git a/5.leetcode/src/com/fanxb/common/Q121.java b/5.leetcode/src/com/fanxb/common/Q121.java index e76603a..1370a4e 100644 --- a/5.leetcode/src/com/fanxb/common/Q121.java +++ b/5.leetcode/src/com/fanxb/common/Q121.java @@ -21,4 +21,15 @@ public class Q121 { return max; } + public int maxProfile1(int[] prices) { + if (prices.length == 1) { + return 0; + } + int res = 0, minP = prices[0]; + for (int price : prices) { + minP = Math.min(minP, price); + res = Math.max(res, price - minP); + } + return res; + } } diff --git a/5.leetcode/src/com/fanxb/common/Q33.java b/5.leetcode/src/com/fanxb/common/Q33.java new file mode 100644 index 0000000..be42f69 --- /dev/null +++ b/5.leetcode/src/com/fanxb/common/Q33.java @@ -0,0 +1,53 @@ +package com.fanxb.common; + +public class Q33 { + + + public int search(int[] nums, int target) { + int n = nums.length; + if (n == 1) return nums[0] == target ? 0 : -1; + int l = 0, r = n - 1; + while (l < r) { + boolean s = nums[l] < nums[r]; + int m = (l + r) / 2; + if (nums[m] == target) { + return m; + } else { + if (nums[m] >= nums[0]) { + //说明m落在左边的升序 + if (nums[m] < target) { + if (l == m) l++; + else l = m; + } else { + if (!s && nums[l] > target) { + //说明target在右边的升序里 + if (l == m) l++; + else l = m; + } else { + r = m; + } + + } + } else { + //m落在右边的升序 + if (nums[m] > target) { + r = m; + } else { + if (s || nums[l] > target) { + //说明target在右边的升序里 + if (l == m) l++; + else l = m; + } else { + r = m; + } + } + } + } + } + return nums[l] == target ? l : -1; + } + + public static void main(String[] args) { + System.out.println(new Q33().search(new int[]{1, 3}, 0)); + } +} diff --git a/5.leetcode/src/com/fanxb/common/Q68.java b/5.leetcode/src/com/fanxb/common/Q68.java new file mode 100644 index 0000000..ae2e305 --- /dev/null +++ b/5.leetcode/src/com/fanxb/common/Q68.java @@ -0,0 +1,36 @@ +package com.fanxb.common; + +/** + * Created with IntelliJ IDEA + * + * @author fanxb + * Date: 2020/6/11 9:56 + */ +public class Q68 { + public int searchInsert(int[] nums, int target) { + int l = 0, r = nums.length - 1; + while (l < r) { + int m = (l + r) / 2; + if (nums[m] > target) { + if (r == m) { + l++; + } else { + r = m; + } + } else if (nums[m] == target) { + return m; + } else { + if (l == m) { + l++; + } else { + l = m; + } + } + } + return nums[l] < target ? l + 1 : l; + } + + public static void main(String[] args) { + System.out.println(new Q68().searchInsert(new int[]{1, 3, 5, 6}, 5)); + } +}