上一页 1 ··· 16 17 18 19 20
摘要: 思路 两个数组或者字符串进行比较,本质上是一种枚举,而减少枚举次数的有效方法是使用动态规划。 用一个二维数组记录状态变化,dp[i][j]表示Si和Pj是否匹配。(Si表示字符串中前 i 个字符长度的子字符串,Pj同理) 状态方程: 代码 class Solution { public boolean isMatch(String s, String p) { ... 阅读全文
posted @ 2020-07-05 22:31 zjy4fun 阅读(200) 评论(0) 推荐(0) 编辑
摘要: https://leetcode-cn.com/problems/longest-valid-parentheses/ 思路 一开始的想法是用栈辅助匹配括号,后来发现题目中求的是最长有效,发现用栈直接匹配括号有点麻烦。后来,看了官方题解: 使用栈来记录最后一个没有被匹配的右括号的下标 对于遇到的每个 阅读全文
posted @ 2020-07-04 21:59 zjy4fun 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 108. 将有序数组转换为二叉搜索树 思路 二叉搜索树的概念: 二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均 阅读全文
posted @ 2020-07-03 22:08 zjy4fun 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 思路 首先 想到的就是暴力算法,将二维数组拆成一维数组,排序(或者直接放进优先队列)最后竟然过了。。。 因为矩阵在行列方向上都是升序排列的,在有序数组中搜索一个数字常用二分法,所以可以考虑变种的二分法。 二维数组从左下向右上搜索,每次搜索检查一下当前搜遍历到数字范围有没有超过k。 代码 暴力: im 阅读全文
posted @ 2020-07-02 08:52 zjy4fun 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 718. 最长重复子数组 思路 这道题类似最长公共子序列,可以使用动态规划来解决。 代码 二维的 /** * 1 <= len(A), len(B) <= 1000 * 0 <= A[i], B[i] < 100 */ class Solution { public int findLength(i 阅读全文
posted @ 2020-07-01 23:00 zjy4fun 阅读(219) 评论(0) 推荐(0) 编辑
摘要: import java.util.HashMap; import java.util.Map; class Solution { public int[] twoSum(int[] nums, int target) { Map<Integer, Integer> map = new HashMap 阅读全文
posted @ 2020-07-01 22:56 zjy4fun 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 剑指 Offer 09. 用两个栈实现队列 思路 把数据在两个栈中分别“折腾”一次,出来的顺序就是队列的顺序。 向stack1中push数据——向队列中添加数据 从stack2中弹出数据——从队列中删除头部数据 代码 import java.util.Stack; class CQueue { St 阅读全文
posted @ 2020-07-01 22:54 zjy4fun 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 抽象所有编程语言都提供抽象机制,OOP允许我们根据问题来描述问题,而不是根据运行解决方案的计算机。Alan Kay总结的Java语言的五大基本特征:万物皆对象程序是一组对象,通过消息传递来告知彼此该做什么、每个对象有自己的存储空间,可容纳其它对象每个对象都有一种类型同一类所有对象都能接收所有相同的消息(对象的可替换性)Grady Booch提供了对对象更简洁的描述:一个对象具有自己的状态,行为和标... 阅读全文
posted @ 2020-06-29 22:58 zjy4fun 阅读(865) 评论(0) 推荐(0) 编辑
上一页 1 ··· 16 17 18 19 20