![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
夸父号
这个作者很懒,什么都没留下…
展开
-
28. 实现 strStr() (Java) 利用KMP 算法
目录KMP算法简述题目描述KMP算法简述KMP算法中含有部分匹配表(Partial Match Table)的数组,这个数组是KMP的核心,因为在字符串匹配的过程中回退问题的解决就要依靠这个PMT。PMT是怎么来的呢?PMT中的值是字符串的前缀集合与后缀集合的交集中最长元素的长度。例如,对于”aba”,它的前缀集合为{”a”, ”ab”},后缀 集合为{”ba”, ”a”}。两个集合的交集为{”a”},那么长度最长的元素就是字符串”a”了,长 度为1,所以对于”aba”而言,它在PMT表中对应的值就原创 2021-12-30 14:18:11 · 355 阅读 · 0 评论 -
Leetcode26. 删除有序数组中的重复项(java)
文章目录题目思路双指针小总结代码题目思路在原来的数组进行修改,要考虑的是如何保证原来的数组不被破坏,双指针可以很好的解决这一个问题。一个向后面走,不一样就推着满指针向前走,并修改数组的值。双指针小总结双指针常用在线性的数据结构中如链表和数组。常用的有对撞指针和快慢指针。快慢指针可求链表中环的长度链表中环的起点链表是否有环滑动窗口两个指针,一前一后组成滑动窗口。过程中还需要判断窗口是否达到了要求,窗口增加和窗口缩减。碰撞指针两个指针从左右两端开始向中间集合,可以用来翻转一下字符原创 2021-12-27 19:03:22 · 176 阅读 · 0 评论 -
Leetcode9. 回文数(java)
文章目录题目描述方法代码题目描述给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。方法要判断一个数字是否是回文的,省事的就是判断前一半与后一半是否一样。那么问题来了,怎么判断到一半了。可以利用java的转字符串方法,然后得到长度。但用自带的方法就有点不讲武德,可以自己写个判断长度的函数。也可以对这个数字进行拆分,得到后面的数字。与前面的进行比较就可以了。数原创 2021-12-25 16:18:36 · 292 阅读 · 0 评论 -
leetcode买卖股票的时机(java)
leetcode题目快速理解原创 2021-12-03 15:32:41 · 222 阅读 · 0 评论 -
1、复杂度和简单排序(选择排序、冒泡排序、插入排序)
这些文章都是看B站左神所总结的,此文章是对左神视频的拙劣模仿。左神视频传送门目录一、链接1二、链接2<span id=‘index1’>一、这是链接1<span id=‘index2’>这是链接2复杂度时间复杂度: 时间复杂度是估计常数操作的一个指标。...原创 2021-11-20 16:27:59 · 847 阅读 · 0 评论 -
94. 二叉树的中序遍历(java)
题目描述给定一个二叉树的根节点 root ,返回它的 中序 遍历。首先是递归方法。访问顺序:先左子树,再根节点,最后右子树;原理:要先观察最后一个,从后往前进行分析。随后进入D的右节点,运行inorder(res,root.right);D的右节点为空,函数返回。到这里当然没结束,会依次返回到B点E点,回到A点。此时,A的左侧节点已经加入完了,接下来是A的右侧节点。代码如下class Solution { public List<Integer> inorderT原创 2021-11-11 19:30:31 · 2067 阅读 · 0 评论 -
leetcode 70. 爬楼梯 (Java)
题目描述:假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定n是一个正整数这里使用的是动态规划解决问题,可以观察发现后一步的次数与前面的次数息息相关。这里举个栗子: 当n=4时,只有通过n=3然后加1,或者n=2加2才能到达。而n=3时,只有只有通过n=2然后加1,或者n=1加2才能到达。这样我们就可以进行一次循环了,得到结果了。代码如下:class Solution { publi...原创 2021-11-06 19:13:50 · 174 阅读 · 0 评论 -
LeetCode 53. 最大子序和
题目描述给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。下面这个方法的思想就好比赚钱,遇到负数我们自然是希望舍弃。但万一负数后面的正数又很大呢?于是我们就定义一个max去存放最大的值,如果比max大就存入。具体是如何执行的呢?遍历,用sum来求得和值(这时候有人问了,如果sum<0怎么办呢?当然是直接清零sum,来表示我们今天没赔钱)只有在sum为正数的时候才不清空。(也有人就会问,加一个稍小的负数不就变小了嘛,我们不就赔钱了嘛..原创 2021-11-04 10:34:07 · 80 阅读 · 0 评论 -
leetcode 21. 合并两个有序链表
简单的题目描述将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。这题的解法是定义一个哨兵节点(哨兵节点是一种不保存任何数据的节点,用法非常灵活,一般被用来标识数据结构的头尾或没有节点的情况。)利用定义的指针进行操作,进入循环后,比较两个数值的大小,将比较小的节点定义为哨兵节点的下一个结构体,并将指针和节点向后移动,方便下一次的使用。class Solution { public ListNode mergeTwoLists(Lis...原创 2021-11-03 20:50:29 · 91 阅读 · 0 评论 -
leetcode 20. 有效的括号 java
简单的题目描述:给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。来源:力扣(LeetCode)这里用的是java的堆栈解题,当为左括号则入栈,右括号则出栈,进行一次遍历,当遍历结束时判断堆栈是否为空来确定结果。中间可以有一些优化:奇数直接返回false,初始为右括号也返回false等等。idea测试代码import java.util.St..原创 2021-11-02 17:31:50 · 163 阅读 · 0 评论 -
leetcode1、两数之和
先开始第一遍刷题吧!梦开始的地方。题目:给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/two-sum脑子里只有一种思路就是穷举class Solution { publ...原创 2021-10-29 13:48:08 · 69 阅读 · 0 评论