738
968
This commit is contained in:
parent
50cafa2cb5
commit
2dabc83adb
65
src/main/java/cn/whaifree/leetCode/Greedy/LeetCode738.java
Normal file
65
src/main/java/cn/whaifree/leetCode/Greedy/LeetCode738.java
Normal file
@ -0,0 +1,65 @@
|
||||
package cn.whaifree.leetCode.Greedy;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author whai文海
|
||||
* @Date 2024/3/6 15:24
|
||||
* @注释
|
||||
*/
|
||||
public class LeetCode738 {
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
System.out.println(new Solution().monotoneIncreasingDigits(65832));
|
||||
}
|
||||
|
||||
|
||||
class Solution {
|
||||
|
||||
/**
|
||||
* 98,一旦出现strNum[i - 1] > strNum[i]的情况(非单调递增),首先想让strNum[i - 1]减一,strNum[i]赋值9(因为要最大的数,用9一定满足非递减),这样这个整数就是89
|
||||
* @param N
|
||||
* @return
|
||||
*/
|
||||
public int monotoneIncreasingDigits(int N) {
|
||||
String[] strings = (N + "").split("");
|
||||
|
||||
int start = strings.length;
|
||||
|
||||
// 出现递减的两个 前一个-1,找到最先递减的的index,index后面全部为9
|
||||
for (int i = strings.length - 1; i > 0; i--) {
|
||||
if (Integer.parseInt(strings[i]) < Integer.parseInt(strings[i - 1])) {
|
||||
strings[i - 1] = (Integer.parseInt(strings[i - 1]) - 1) + "";
|
||||
start = i;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for (int i = start; i < strings.length; i++) {
|
||||
strings[i] = "9";
|
||||
}
|
||||
return Integer.parseInt(String.join("",strings));
|
||||
}
|
||||
}
|
||||
|
||||
class Solution1 {
|
||||
public int monotoneIncreasingDigits(int n) {
|
||||
String s = String.valueOf(n);
|
||||
char[] chars = s.toCharArray();
|
||||
int start = s.length();
|
||||
for (int i = s.length() - 2; i >= 0; i--) {
|
||||
if (chars[i] > chars[i + 1]) {
|
||||
chars[i]--;
|
||||
start = i+1;
|
||||
}
|
||||
}
|
||||
for (int i = start; i < s.length(); i++) {
|
||||
chars[i] = '9';
|
||||
}
|
||||
return Integer.parseInt(String.valueOf(chars));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
66
src/main/java/cn/whaifree/leetCode/Greedy/LeetCode968.java
Normal file
66
src/main/java/cn/whaifree/leetCode/Greedy/LeetCode968.java
Normal file
@ -0,0 +1,66 @@
|
||||
package cn.whaifree.leetCode.Greedy;
|
||||
|
||||
import cn.whaifree.leetCode.model.TreeNode;
|
||||
import org.junit.Test;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author whai文海
|
||||
* @Date 2024/3/6 16:34
|
||||
* @注释
|
||||
*/
|
||||
public class LeetCode968 {
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
System.out.println(new Solution().minCameraCover(TreeNode.constructTreeByArray(1, 2, null, 2, 4, 6)));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 我们分别有三个数字来表示:
|
||||
*
|
||||
* 0:该节点无覆盖
|
||||
* 1:本节点有摄像头
|
||||
* 2:本节点有覆盖
|
||||
*/
|
||||
class Solution {
|
||||
|
||||
int res = 0;
|
||||
public int minCameraCover(TreeNode root) {
|
||||
|
||||
// 根节点
|
||||
if (travel(root) == 0) {
|
||||
res++;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
public int travel(TreeNode root) {
|
||||
|
||||
if (root == null) {
|
||||
return 2;
|
||||
}
|
||||
|
||||
|
||||
int left = travel(root.left);
|
||||
int right = travel(root.right);
|
||||
|
||||
// 左右节点都有覆盖
|
||||
if (left == 2 && right == 2) return 0;
|
||||
|
||||
//左或右无覆盖,本节点要增加摄像头
|
||||
if (left == 0 || right == 0) {
|
||||
res++;
|
||||
return 1;
|
||||
}
|
||||
|
||||
// 左或右有摄像头,本节点被覆盖
|
||||
if (left == 1 || right == 1) {
|
||||
return 2;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,5 +1,7 @@
|
||||
package cn.whaifree.leetCode;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
@ -114,3 +116,25 @@ class ListNode {
|
||||
ListNode(int val) { this.val = val; }
|
||||
ListNode(int val, ListNode next) { this.val = val; this.next = next; }
|
||||
}
|
||||
|
||||
class RefCountGC{
|
||||
// 这个成员属性的唯一作用就是占用一点内存
|
||||
private byte[] bigSize = new byte[5*1024*1024];
|
||||
// 引用
|
||||
Object reference = null;
|
||||
|
||||
byte[]buffer = new byte[1*1024*1024];//1MB
|
||||
public static void main(String[] args) {
|
||||
ArrayList<RefCountGC> list = new ArrayList<>();
|
||||
int count = 0;
|
||||
try {
|
||||
while (true) {
|
||||
list.add(new RefCountGC());
|
||||
count++;
|
||||
}
|
||||
}catch(Throwable e){
|
||||
System.out.println("count:" + count);
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user