新增 LeetCode 题目解答: 206, 287, 225, 28, 2487, 15, 202
This commit is contained in:
parent
6783c55d61
commit
a91dc82012
@ -0,0 +1,58 @@
|
|||||||
|
package cn.whaifree.redo.redo_all_240721;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @version 1.0
|
||||||
|
* @Author whai文海
|
||||||
|
* @Date 2024/7/23 22:46
|
||||||
|
* @注释
|
||||||
|
*/
|
||||||
|
public class LeetCode15 {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
int[] nums = new int[]{-1, 0, 1, 2, -1, -4};
|
||||||
|
System.out.println(threeSum(nums));
|
||||||
|
|
||||||
|
System.out.println(threeSum(new int[]{1,2,1}));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<List<Integer>> threeSum(int[] nums) {
|
||||||
|
int len = nums.length;
|
||||||
|
ArrayList<List<Integer>> res = new ArrayList<>();
|
||||||
|
if (len < 3) {
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
Arrays.sort(nums);
|
||||||
|
|
||||||
|
|
||||||
|
for (int left = 0; left < len - 2; left++) {
|
||||||
|
int mid = left + 1;
|
||||||
|
int right = len - 1;
|
||||||
|
if (left > 0 && nums[left] == nums[left - 1]) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
while (mid < right) {
|
||||||
|
int sum = nums[left] + nums[mid] + nums[right];
|
||||||
|
if (sum == 0) {
|
||||||
|
res.add(Arrays.asList(nums[left], nums[mid], nums[right]));
|
||||||
|
while (mid < right && nums[mid] == nums[mid + 1]) {
|
||||||
|
mid++;
|
||||||
|
}
|
||||||
|
while (mid < right && nums[right] == nums[right - 1]) {
|
||||||
|
right--;
|
||||||
|
}
|
||||||
|
// 如果有重复的,必然要跳过
|
||||||
|
mid++;
|
||||||
|
right--;
|
||||||
|
} else if (sum > 0) {
|
||||||
|
right--;
|
||||||
|
} else {
|
||||||
|
mid++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,46 @@
|
|||||||
|
package cn.whaifree.redo.redo_all_240721;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @version 1.0
|
||||||
|
* @Author whai文海
|
||||||
|
* @Date 2024/7/22 23:18
|
||||||
|
* @注释
|
||||||
|
*/
|
||||||
|
public class LeetCode202 {
|
||||||
|
public static void main(String[] args)
|
||||||
|
{
|
||||||
|
int n = 2;
|
||||||
|
System.out.println(isHappy(n));
|
||||||
|
System.out.println(isHappy(19));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 2 4 16 1+36=37 9+47=56 25+36=61 36+1=37
|
||||||
|
* @param n
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static boolean isHappy(int n)
|
||||||
|
{
|
||||||
|
Set<Integer> set = new HashSet<>();
|
||||||
|
|
||||||
|
while (n != 1) {
|
||||||
|
int tmpSum = 0;
|
||||||
|
while (n > 0) {
|
||||||
|
int retail = n % 10;
|
||||||
|
tmpSum += retail * retail;
|
||||||
|
n /= 10;
|
||||||
|
}
|
||||||
|
if (set.contains(tmpSum)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
set.add(tmpSum);
|
||||||
|
n = tmpSum;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,43 @@
|
|||||||
|
package cn.whaifree.redo.redo_all_240721;
|
||||||
|
|
||||||
|
import cn.whaifree.leetCode.model.ListNode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @version 1.0
|
||||||
|
* @Author whai文海
|
||||||
|
* @Date 2024/7/22 22:56
|
||||||
|
* @注释
|
||||||
|
*/
|
||||||
|
public class LeetCode206 {
|
||||||
|
public static void main(String[] args)
|
||||||
|
{
|
||||||
|
ListNode listNode = ListNode.listNodeFromArray(new int[]{1, 2, 3, 4, 5});
|
||||||
|
ListNode.printList(reverseList(listNode));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 递归
|
||||||
|
* @param head
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static ListNode reverseList(ListNode head)
|
||||||
|
{
|
||||||
|
return reverse(null, head);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* a b c d
|
||||||
|
* @param pre
|
||||||
|
* @param after
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static ListNode reverse(ListNode pre, ListNode after) {
|
||||||
|
if (after == null) {
|
||||||
|
return pre;
|
||||||
|
}
|
||||||
|
ListNode tmp = after.next;
|
||||||
|
after.next = pre;
|
||||||
|
return reverse(after, tmp);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,67 @@
|
|||||||
|
package cn.whaifree.redo.redo_all_240721;
|
||||||
|
|
||||||
|
import java.util.Deque;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @version 1.0
|
||||||
|
* @Author whai文海
|
||||||
|
* @Date 2024/7/23 23:43
|
||||||
|
* @注释
|
||||||
|
*/
|
||||||
|
public class LeetCode225 {
|
||||||
|
public static void main(String[] args)
|
||||||
|
{
|
||||||
|
MyStack myStack = new MyStack();
|
||||||
|
myStack.push(1);
|
||||||
|
myStack.push(2);
|
||||||
|
System.out.println(myStack.top());
|
||||||
|
System.out.println(myStack.pop());
|
||||||
|
System.out.println(myStack.empty());
|
||||||
|
System.out.println(myStack.pop());
|
||||||
|
System.out.println(myStack.empty());
|
||||||
|
}
|
||||||
|
|
||||||
|
static class MyStack {
|
||||||
|
|
||||||
|
Deque<Integer> q1;
|
||||||
|
Deque<Integer> q2;
|
||||||
|
|
||||||
|
public MyStack() {
|
||||||
|
q1 = new LinkedList<Integer>();
|
||||||
|
q2 = new LinkedList<Integer>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void push(int x) {
|
||||||
|
q1.add(x);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int pop() {
|
||||||
|
while (q1.size() > 1) {
|
||||||
|
q2.add(q1.pop());
|
||||||
|
}
|
||||||
|
int tmp = q1.pop();
|
||||||
|
while (!q2.isEmpty()) {
|
||||||
|
q1.add(q2.pop());
|
||||||
|
}
|
||||||
|
return tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int top() {
|
||||||
|
while (q1.size() > 1) {
|
||||||
|
q2.add(q1.pop());
|
||||||
|
}
|
||||||
|
int tmp = q1.pop();
|
||||||
|
q2.add(tmp);
|
||||||
|
while (!q2.isEmpty()) {
|
||||||
|
q1.add(q2.pop());
|
||||||
|
}
|
||||||
|
return tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean empty() {
|
||||||
|
return q1.isEmpty();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,49 @@
|
|||||||
|
package cn.whaifree.redo.redo_all_240721;
|
||||||
|
|
||||||
|
import cn.whaifree.leetCode.model.ListNode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @version 1.0
|
||||||
|
* @Author whai文海
|
||||||
|
* @Date 2024/7/23 23:09
|
||||||
|
* @注释
|
||||||
|
*/
|
||||||
|
public class LeetCode2487 {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
ListNode listNode = ListNode.listNodeFromArray(new int[]{99, 2, 13, 3, 8});
|
||||||
|
removeNodes(listNode).printList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ListNode removeNodes(ListNode head) {
|
||||||
|
head = reverseList(new ListNode(-1, head));
|
||||||
|
ListNode index = head;
|
||||||
|
while (index.next != null) {
|
||||||
|
if (index.val > index.next.val) {
|
||||||
|
index.next = index.next.next;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
index = index.next;
|
||||||
|
}
|
||||||
|
return reverseList(head);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ListNode reverseList(ListNode head) {
|
||||||
|
return reverse(null, head);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* a b c
|
||||||
|
* @param pre
|
||||||
|
* @param after
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static ListNode reverse(ListNode pre, ListNode after) {
|
||||||
|
if (after == null) {
|
||||||
|
return pre;
|
||||||
|
}
|
||||||
|
ListNode tmp = after.next;
|
||||||
|
after.next = pre;
|
||||||
|
return reverse(after, tmp);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,29 @@
|
|||||||
|
package cn.whaifree.redo.redo_all_240721;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @version 1.0
|
||||||
|
* @Author whai文海
|
||||||
|
* @Date 2024/7/23 23:37
|
||||||
|
* @注释
|
||||||
|
*/
|
||||||
|
public class LeetCode28 {
|
||||||
|
public static void main(String[] args)
|
||||||
|
{
|
||||||
|
String haystack = "hello";
|
||||||
|
String needle = "ll";
|
||||||
|
System.out.println(strStr(haystack, needle));
|
||||||
|
System.out.println(strStr("a", "a"));
|
||||||
|
System.out.println(strStr("mississippi", "issip"));
|
||||||
|
}
|
||||||
|
public static int strStr(String haystack, String needle)
|
||||||
|
{
|
||||||
|
int len = needle.length();
|
||||||
|
for (int i = 0; i <= haystack.length() - len; i++) {
|
||||||
|
String substring = haystack.substring(i, i + len);
|
||||||
|
if (substring.equals(needle)) {
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,52 @@
|
|||||||
|
package cn.whaifree.redo.redo_all_240721;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @version 1.0
|
||||||
|
* @Author whai文海
|
||||||
|
* @Date 2024/7/22 23:12
|
||||||
|
* @注释
|
||||||
|
*/
|
||||||
|
public class LeetCode287
|
||||||
|
{
|
||||||
|
public static void main(String[] args)
|
||||||
|
{
|
||||||
|
int[] nums = {3,1,3,4,2};
|
||||||
|
System.out.println(findDuplicate(nums));
|
||||||
|
int[] nums2 = {1,3,4,2,2};
|
||||||
|
System.out.println(findDuplicate(nums2));
|
||||||
|
int[] nums3 = {1,1};
|
||||||
|
System.out.println(findDuplicate(nums3));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 包含 n + 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n)
|
||||||
|
*
|
||||||
|
* 3,1,3,4,2
|
||||||
|
* 0 1 2 3 4
|
||||||
|
*
|
||||||
|
* fast = nums[nums[fast]]
|
||||||
|
* slow = nums[slow]
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @param nums
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static int findDuplicate(int[] nums)
|
||||||
|
{
|
||||||
|
// 快慢指针
|
||||||
|
int fast = 0;
|
||||||
|
int slow = 0;
|
||||||
|
do {
|
||||||
|
fast = nums[nums[fast]];
|
||||||
|
slow = nums[slow];
|
||||||
|
} while (slow != fast);
|
||||||
|
|
||||||
|
fast = 0;
|
||||||
|
|
||||||
|
while (fast != slow) {
|
||||||
|
fast = nums[fast];
|
||||||
|
slow = nums[slow];
|
||||||
|
}
|
||||||
|
return slow;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user