刷题笔记
独钓清水河
天高任鸟飞 海阔凭鱼跃。
展开
-
【LeetCode第93题】复原IP地址(java实现)
【LeetCode第93题】复原IP地址递归+回溯代码实现总结题目:给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 ‘.’ 分隔。示例:输入: “25525511135”输出: [“255.255.11.135”, “255.255.111.35”]递归+回溯题目可以理解为一段字符串分成几断。思路就是先分一段出来,然后再把后面的字符串继续分,这是很常规的递归思想。也就是后续的动作都是重复的原创 2020-08-10 17:43:18 · 670 阅读 · 0 评论 -
【剑指offer第45题】把数组排成最小的数(java实现)
把数组排成最小的数字典排序代码实现总结字典排序输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。示例:输入: [10,2]输出: “102”输入: [3,30,34,5,9]输出: “3033459”首先组合成字符串题型,最好开始就把数字转化为字符串,这样避免数字相加后越界,而且使用StringBuffer类,字符串是可变的,还是线程安全的。数字组合成字符串,还涉及到大小,这里就要排序。而且观察到,第一位数字越小,就应该排在前面。那么这样就可以确原创 2020-07-30 11:26:36 · 392 阅读 · 0 评论 -
最近股市跌宕起伏,一文解决LeetCode所有股票问题(java实现)
LeetCode所有股票问题动态规划股票相关题目总结动态规划所有的股票问题都是动态规划问题,而用动态规划解题就需要写出动态转移方程,也就是需要先定义好状态。基础题型:给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 ;设计一个算法来计算你所能获取的最大利润。你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。股票相关的题目是很明显的动态规划题目,因为股票买不买卖不卖这就是状态转化的过程,所以很自然需要考虑动态规划思想。而解决动态规划问题最重要的写出状态转移方原创 2020-07-18 12:51:56 · 567 阅读 · 0 评论 -
【LeetCode第44题】 通配符匹配(java实现)
通配符匹配动态规划代码实现总结动态规划题目描述:给定一个字符串 (s) 和一个字符模式 (p) ,实现一个支持 '?' 和 '*' 的通配符匹配。'?' 可以匹配任何单个字符。'*' 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 。示例:输入: s = “aa” p = “a” 输出: false输入: s = “aa”原创 2020-07-05 19:52:00 · 914 阅读 · 0 评论 -
[LeetCode第209题] 长度最小的子数组(java实现)
长度最小的子数组解题思路代码实现总结解题思路题目:给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度。如果不存在符合条件的连续子数组,返回 0。示例:输入: s = 7, nums = [2,3,1,2,4,3]输出: 2解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组。首先想到暴力法,遍历所有的子数组,在子数组和大于等于s之中,选长度最短的。时间复杂度是O(n^2),很耗时。然后是双指针,两个指针表示子数组原创 2020-06-28 13:37:59 · 368 阅读 · 0 评论 -
【剑指offer第24题】二叉树中和为某一值的路径(java实现)
二叉树中和为某一值的路径解答思路代码实现总结解答思路输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1返回:[[5,4,11,2],[5,8原创 2020-06-26 11:38:50 · 184 阅读 · 0 评论 -
【剑指offer第25题】复杂链表的深拷贝(java实现)
复杂链表的深拷贝结题思路实现代码总结结题思路输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)两次遍历如果是普通的链表,就很简单,直接遍历一遍链表,然后边遍历边复制。但是此时多了一个引用,指向任意的结点。这个可以单独处理,先把链表复制好,根据原来老的链表的随机指针的引用再一次复制到新的链表中。而这时候需要有个对应关原创 2020-06-26 10:59:47 · 327 阅读 · 0 评论