当前位置: 首页 > 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.dtcms.com/a/285003.html

相关文章:

  • 面试Redis篇-深入理解Redis缓存雪崩
  • 关于vector中的erase的强调
  • 从一到无穷大 #48:Vector Bucket,S3如何把向量玩成新范式?
  • imx6ull-系统移植篇9——bootz启动 Linux 内核
  • Spark 之 HashJoin
  • Langchain和Faiss搭建本地知识库对比
  • python东方财富api股票数据获取程序
  • Vue3从入门到精通
  • Django `transaction.atomic()` 完整使用指南
  • SWD和JTAG区别
  • 【47】MFC入门到精通——MFC编辑框 按回车键 程序闪退问题 ,关闭 ESC程序退出 问题
  • git merge 和 git rebase 的区别
  • LoRA:大模型低秩适配技术全景——原理、演进与高效微调革命
  • MongoDB社区版安装(windows)
  • 第4.3节 iOS App生成追溯关系
  • 联发科MT6897 5G智能手机应用处理器 软件寄存器表:通用闪存(UFS)
  • Kafka——无消息丢失配置怎么实现?
  • C++:list
  • 博客摘录「 Springboot入门到精通(超详细文档)」2025年7月4日
  • ubuntu 22.02 带外进单用户拯救系统
  • 人工智能之数学基础:概率论和数理统计在机器学习的地位
  • 什么是 M4A 和 WAV?这两种音频互转会导致音质发生变化吗
  • python爬虫入门(小白五分钟从入门到精通)
  • 振石股份闯关上市:业绩连降,资产、负债两端暗藏隐忧
  • leetcode 3202. 找出有效子序列的最大长度 II 中等
  • 18650锂电池点焊机:新能源制造的精密纽带
  • Unreal5从入门到精通之如何实现第一人称和第三人称自由切换
  • 电脑重启后快速找回历史复制内容的实操方法
  • YOLOv8 PTQ、QAT量化及其DepGraph剪枝等压缩与加速推理有效实现(含代码)
  • Leetcode 494. 目标和