Day 37 贪心算法 Part06
今日任务
- 738.单调递增的数字
- 968.监控二叉树
代码实现
738.单调递增的数字
做了这么多贪心的题,这是唯一一道自己写出来的,就是思路虽然一开始就对了,感觉没那么难,但是代码还是比较复杂,用的时间也有点长
public int monotoneIncreasingDigits(int n) {LinkedList<Integer> list = new LinkedList<>();while (n > 0) {list.add(n%10);n = n / 10;}for (int i = 0; i < list.size() - 1; i++) {if (list.get(i + 1) > list.get(i)) {list.set(i + 1, Math.max(list.get(i + 1) - 1, 0));list.set(i, 9);}}for (int i = list.size() - 1; i >= 0; i--) {if (list.get(i) == 9) {while (i >= 0) {list.set(i, 9);i--;}break;}}int result = 0;for (int i = 0; i < list.size(); i++) {int x = list.get(i);for (int j = 0; j < i; j++) {x = x * 10;}result+=x;}return result;}
968.监控二叉树
直接看题解就完事了,一点思路没有
int result = 0;public int minCameraCover(TreeNode root) {int traversal = traversal(root);if (traversal == 0) return result + 1;return result;}/*** 递归* 定义有覆盖为2,无覆盖为0,有监控为1* @param current* @return*/int traversal(TreeNode current) {if (current == null) return 2;int left = traversal(current.left);int right = traversal(current.right);if (left == 2 && right == 2) {return 0;}if (left == 0 || right == 0) {result++;return 1;}if (left == 1 || right == 1) {return 2;}return -1;}
今日总结
- 两天没有写总结,用昨天和今天两天补上了周二漏的,感觉确实没什么套路,除了几道区间的题比较相似以外,要么是一眼能看出来,要么是不可能看出来
- 大模型的东西今天也学了一点,但是不多,在Mac上下载了ChatGLM3-6b(大概叫这个吧),非常慢,向量库Milvus也没装好
- 今天早上我认为是反转,但是到了下午感觉又像反弹,人工智能不知道还能不能持续,汽车也不知道咋回事,懵懵比比。另外,今天小米汽车发布,但是也没找到合适的股票想买的,明天看情况吧。