当前位置: 首页 > news >正文

【CodeTop】每日练习 2025.7.17

Leetcode 122. 买卖股票的最佳时机 II

状态机 DP,把可能的情况拆解清楚就比较好写了。

class Solution {private int[] prices;private int[][] memo;public int maxProfit(int[] prices) {this.prices = prices;int n = prices.length;memo = new int[n][2];for (int[] row : memo) {Arrays.fill(row, -1);}return dfs(n - 1, 0);}private int dfs(int i, int state) {if (i < 0) {return state == 1 ? Integer.MIN_VALUE : 0;}if (memo[i][state] != -1) {return memo[i][state];}if (state == 1) {return memo[i][state] = Math.max(dfs(i - 1, 1), dfs(i - 1, 0) - prices[i]);}return memo[i][state] = Math.max(dfs(i - 1, 0), dfs(i - 1, 1) + prices[i]);}
}

Leetcode 240. 搜索二维矩阵 II

利用矩阵双向递增的性质,每轮循环排除掉一行或者一列。

class Solution {public boolean searchMatrix(int[][] matrix, int target) {int m = matrix.length, n = matrix[0].length;int i = 0, j = n - 1;while (i < m && j >= 0) {if (matrix[i][j] == target) {return true;} else if (matrix[i][j] < target) {i++;} else {j--;}}return false;}
}

Leetcode 98. 验证二叉搜索树

核心思路是验证二叉树中的每个节点是否在符合要求的范围内,先中后三种顺序的遍历都可以解决。

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public boolean isValidBST(TreeNode root) {return isValidBST(root, Long.MIN_VALUE, Long.MAX_VALUE);}private boolean isValidBST(TreeNode node, long left, long right) {if (node == null) {return true;}long cur = node.val;return left < cur && cur < right && isValidBST(node.left, left, cur) && isValidBST(node.right, cur, right);}
}

Leetcode 234. 回文链表

利用快慢指针找出链表中点,再将它从中间反转,依次比较每个节点值是否相等。

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public boolean isPalindrome(ListNode head) {ListNode middle = middle(head);middle = reverse(middle);ListNode list1 = head, list2 = middle;while (list2 != null) {if (list1.val != list2.val) {return false;}list1 = list1.next;list2 = list2.next;}middle = reverse(middle);return true;}private ListNode middle(ListNode head) {ListNode slow = head, fast = head;while (fast != null && fast.next != null) {slow = slow.next;fast = fast.next.next;}return slow;}private ListNode reverse(ListNode head) {ListNode pre = null, cur = head, next;while (cur != null) {next = cur.next;cur.next = pre;pre = cur;cur = next;}return pre;}
}

Leetcode 14. 最长公共前缀

取第一个字符串作为标准,依次比较后续所有字符串每个位置上字符是否一致即可。

class Solution {public String longestCommonPrefix(String[] strs) {String first = strs[0];for (int col = 0; col < first.length(); col++) {char cur = first.charAt(col);for (String str : strs) {if (col == str.length() || str.charAt(col) != cur) {return first.substring(0, col);}}}return first;}
}
http://www.lryc.cn/news/591733.html

相关文章:

  • Python类型转换,深浅拷贝
  • 【深度学习】神经网络过拟合与欠拟合-part5
  • DiffPy-CMI详细安装教程
  • ubuntu 22.04 pam 模块设置用户登录失败锁定
  • 网络基础11 上公网--Internet接入技术
  • python的旧时光咖啡厅数据分析管理系统
  • 深入理解CSS定位:绝对定位的包含块机制
  • JUnit5 实操
  • 征程 6 UCP 任务优先级 抢占简介与实操
  • 流程控制( break与continue)
  • Xss-labs 靶场lever1~lever8通关练习
  • windows利用wsl安装qemu
  • HD现代机器人与TESOLLO合作推出工业自动化双臂机器人解决方案
  • 为什么喜欢叫index文件
  • javax.servlet.http.HttpServletResponse;API导入报错解决方案
  • 找不到或无法加载主类 org.gradle.wrapper.GradleWrapperMain
  • 4G模块 A7680通过MQTT协议连接到腾讯云
  • 初试Spring AI实现聊天功能
  • 「Chrome 开发环境快速屏蔽 CORS 跨域限制详细教程」*
  • 基于现代R语言【Tidyverse、Tidymodel】的机器学习方法
  • 关于pytorch虚拟环境及具体bug问题修改
  • 2025 XYD Summer Camp 7.17 模考
  • 【面板数据】上市公司股价同步性数据集-dta+xlsx(2000-2023年)
  • Adobe Acrobat 插件功能、应用与开发
  • 【Spring AI Alibaba实战Demo】通过Spring AI Alibaba接入本地部署的大模型和线上大模型,实现流式简单对话
  • 8.预处理-demo
  • 【DOCKER】-5 镜像仓库与容器编排
  • docker中 contriner 和 images 什么关系
  • Redis学习系列之—— JDHotKey 热点缓存探测系统
  • maven本地仓库清缓存py脚本