redo
This commit is contained in:
parent
ed50ebaeff
commit
a9c9c4cf30
50
src/main/java/cn/whaifree/redo/redo_24_2_22/LeetCode131.java
Normal file
50
src/main/java/cn/whaifree/redo/redo_24_2_22/LeetCode131.java
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
package cn.whaifree.redo.redo_24_2_22;
|
||||||
|
|
||||||
|
import cn.whaifree.leetCode.model.TreeNode;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @version 1.0
|
||||||
|
* @Author whai文海
|
||||||
|
* @Date 2024/2/22 11:25
|
||||||
|
* @注释
|
||||||
|
*/
|
||||||
|
public class LeetCode131 {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test(
|
||||||
|
) {
|
||||||
|
TreeNode treeNode = TreeNode.constructTreeByArray(3, 5, 1, 6, 2, 0, 8, null, null, 7, 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
class Solution {
|
||||||
|
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
|
||||||
|
if (root == null) {
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (root.val == p.val) {
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
if (root.val == q.val) {
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
|
||||||
|
TreeNode right = lowestCommonAncestor(root.right, p, q);
|
||||||
|
TreeNode left = lowestCommonAncestor(root.left, p, q);
|
||||||
|
|
||||||
|
// 这里用于输出公共父节点
|
||||||
|
// 某个节点,第一个出现的左边有p或者q,右边也有p或者q,则就是公共父节点。
|
||||||
|
if (right != null && left != null) {
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (right != null) {
|
||||||
|
return right;
|
||||||
|
} else {
|
||||||
|
return left;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
38
src/main/java/cn/whaifree/redo/redo_24_2_22/LeetCode206.java
Normal file
38
src/main/java/cn/whaifree/redo/redo_24_2_22/LeetCode206.java
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
package cn.whaifree.redo.redo_24_2_22;
|
||||||
|
|
||||||
|
import cn.whaifree.leetCode.model.ListNode;
|
||||||
|
import cn.whaifree.leetCode.model.TreeNode;
|
||||||
|
import com.sun.xml.internal.ws.server.sei.ValueGetter;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @version 1.0
|
||||||
|
* @Author whai文海
|
||||||
|
* @Date 2024/2/22 12:35
|
||||||
|
* @注释
|
||||||
|
*/
|
||||||
|
public class LeetCode206 {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test() {
|
||||||
|
new Solution().reverseList(ListNode.listNodeFromArray(new int[]{1, 2, 3})).printList();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class Solution {
|
||||||
|
public ListNode reverseList(ListNode head) {
|
||||||
|
return reverse(null, head);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ListNode reverse(ListNode before, ListNode after) {
|
||||||
|
if (after == null) {
|
||||||
|
return before;
|
||||||
|
}
|
||||||
|
ListNode tmp = after.next;
|
||||||
|
after.next = before;
|
||||||
|
return reverse(after,tmp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
44
src/main/java/cn/whaifree/redo/redo_24_2_22/LeetCode222.java
Normal file
44
src/main/java/cn/whaifree/redo/redo_24_2_22/LeetCode222.java
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
package cn.whaifree.redo.redo_24_2_22;
|
||||||
|
|
||||||
|
import cn.whaifree.leetCode.model.TreeNode;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @version 1.0
|
||||||
|
* @Author whai文海
|
||||||
|
* @Date 2024/2/22 13:16
|
||||||
|
* @注释
|
||||||
|
*/
|
||||||
|
public class LeetCode222 {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test() {
|
||||||
|
System.out.println(new Solution().countNodes(TreeNode.constructTreeByArray(1)));
|
||||||
|
}
|
||||||
|
|
||||||
|
class Solution {
|
||||||
|
public int countNodes(TreeNode root) {
|
||||||
|
if (root == null) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
TreeNode tmp = root;
|
||||||
|
int right = 0;
|
||||||
|
while (tmp!=null) {
|
||||||
|
tmp = tmp.right;
|
||||||
|
right++;
|
||||||
|
}
|
||||||
|
tmp = root;
|
||||||
|
int left = 0;
|
||||||
|
while (tmp!=null) {
|
||||||
|
tmp = tmp.left;
|
||||||
|
left++;
|
||||||
|
}
|
||||||
|
if (right == left) {
|
||||||
|
return (2 << right-1) - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return countNodes(root.left) + countNodes(root.right) + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
59
src/main/java/cn/whaifree/redo/redo_24_2_22/LeetCode40.java
Normal file
59
src/main/java/cn/whaifree/redo/redo_24_2_22/LeetCode40.java
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
package cn.whaifree.redo.redo_24_2_22;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @version 1.0
|
||||||
|
* @Author whai文海
|
||||||
|
* @Date 2024/2/22 13:26
|
||||||
|
* @注释
|
||||||
|
*/
|
||||||
|
public class LeetCode40 {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test() {
|
||||||
|
new Solution().combinationSum2(new int[]{10,1,2,7,6,1,5}, 8).forEach(
|
||||||
|
list -> {
|
||||||
|
System.out.println(list);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
class Solution {
|
||||||
|
|
||||||
|
List<List<Integer>> res = new ArrayList<>();
|
||||||
|
List<Integer> path = new ArrayList<>();
|
||||||
|
boolean[] used = null;
|
||||||
|
public List<List<Integer>> combinationSum2(int[] candidates, int target) {
|
||||||
|
Arrays.sort(candidates);
|
||||||
|
used = new boolean[candidates.length];
|
||||||
|
backTracking(candidates, target, 0);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void backTracking(int[] candidates, int retailNeed,int start) {
|
||||||
|
if (0 == retailNeed ) {
|
||||||
|
res.add(new ArrayList<>(path));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (retailNeed < 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = start; i < candidates.length; i++) {
|
||||||
|
// 如果前后两个相同,前一个false表示已经使用完了,再使用就会重复
|
||||||
|
if (i > 0 && candidates[i - 1] == candidates[i] && used[i - 1] == false) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
path.add(candidates[i]);
|
||||||
|
used[i] = true;
|
||||||
|
backTracking(candidates, retailNeed - candidates[i], i + 1);
|
||||||
|
used[i] = false;
|
||||||
|
path.remove(path.size() - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
53
src/main/java/cn/whaifree/redo/redo_24_2_22/LeetCode450.java
Normal file
53
src/main/java/cn/whaifree/redo/redo_24_2_22/LeetCode450.java
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
package cn.whaifree.redo.redo_24_2_22;
|
||||||
|
|
||||||
|
import cn.whaifree.leetCode.model.TreeNode;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @version 1.0
|
||||||
|
* @Author whai文海
|
||||||
|
* @Date 2024/2/22 11:40
|
||||||
|
* @注释
|
||||||
|
*/
|
||||||
|
public class LeetCode450 {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test() {
|
||||||
|
new Solution().deleteNode(TreeNode.constructTreeByArray(5,3,6,2,4,null,7), 7).printTree();
|
||||||
|
}
|
||||||
|
|
||||||
|
class Solution {
|
||||||
|
|
||||||
|
public TreeNode deleteNode(TreeNode root, int key) {
|
||||||
|
|
||||||
|
if (root == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (root.val == key) {
|
||||||
|
// 遇到左边或右边为空
|
||||||
|
if (root.left == null) {
|
||||||
|
return root.right;
|
||||||
|
}
|
||||||
|
if (root.right == null) {
|
||||||
|
return root.left;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 左边右边都不为空
|
||||||
|
TreeNode pre = root.right;
|
||||||
|
while (pre.left != null) {
|
||||||
|
pre = pre.left;
|
||||||
|
}
|
||||||
|
pre.left = root.left;
|
||||||
|
return root.right;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (root.val > key) {
|
||||||
|
root.left = deleteNode(root.left, key);
|
||||||
|
} else if (root.val < key) {
|
||||||
|
root.right = deleteNode(root.right, key);
|
||||||
|
}
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
68
src/main/java/cn/whaifree/redo/redo_24_2_22/LeetCode501.java
Normal file
68
src/main/java/cn/whaifree/redo/redo_24_2_22/LeetCode501.java
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
package cn.whaifree.redo.redo_24_2_22;
|
||||||
|
|
||||||
|
import cn.whaifree.leetCode.model.TreeNode;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @version 1.0
|
||||||
|
* @Author whai文海
|
||||||
|
* @Date 2024/2/22 12:04
|
||||||
|
* @注释
|
||||||
|
*/
|
||||||
|
public class LeetCode501 {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test() {
|
||||||
|
TreeNode root = TreeNode.constructTreeByArray(1,null,2);
|
||||||
|
for (int i : new Solution().findMode(root)) {
|
||||||
|
System.out.println(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class Solution {
|
||||||
|
List<Integer> res = new ArrayList<>();
|
||||||
|
// 最高出现的次数
|
||||||
|
int most = 0;
|
||||||
|
// 当前临时记录的值
|
||||||
|
int tmpValue = Integer.MIN_VALUE;
|
||||||
|
// 临时记录的值得次数
|
||||||
|
int tmpCount = 0;
|
||||||
|
|
||||||
|
public int[] findMode(TreeNode root) {
|
||||||
|
recursion(root);
|
||||||
|
int[] ints = new int[res.size()];
|
||||||
|
for (int i = 0; i < res.size(); i++) {
|
||||||
|
ints[i] = res.get(i);
|
||||||
|
}
|
||||||
|
return ints;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void recursion(TreeNode root) {
|
||||||
|
if (root == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
recursion(root.left);
|
||||||
|
if (root.val == tmpValue) {
|
||||||
|
tmpCount++;
|
||||||
|
}else{
|
||||||
|
tmpValue = root.val;
|
||||||
|
tmpCount = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tmpCount > most) {
|
||||||
|
most = tmpCount;
|
||||||
|
res.clear();
|
||||||
|
res.add(root.val);
|
||||||
|
} else if (tmpCount == most) {
|
||||||
|
res.add(root.val);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
recursion(root.right);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user