
算法
算法的世界太美妙了
sandubuhan
这个作者很懒,什么都没留下…
展开
-
LeetCode双指针法汇总-1
双指针法如其名翻转字符串里的单词给定一个字符串,逐个翻转字符串中的每个单词输入: "the sky is blue"输出: "blue is sky the"输入: " hello world! "输出: "world! hello"解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。输入: "a good example"输出: "example good a"解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。说明:无原创 2020-08-16 00:22:57 · 172 阅读 · 0 评论 -
LeetCode算法汇总-4
翻转字符串里的单词给定一个字符串,逐个翻转字符串中的每个单词输入: "the sky is blue"输出: "blue is sky the"输入: " hello world! "输出: "world! hello"解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。输入: "a good example"输出: "example good a"解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。说明:无空格字符构成一个单原创 2020-08-16 00:22:09 · 130 阅读 · 0 评论 -
KMP算法
KMP算法KMP算法是有三位计算机科学家 D.E.Knuth、J.H.Morris、V.R.Pratt提出,取自三人姓氏首字母。KMP算法是String Search算法,之前搜索String,可以用BF,或者BM。BF暴力算法,对主串和模式串进行逐个比较。第一轮时,先对第一个字符进行比较,如果不合适就将模式串右移一位,然后继续比较;依次类推,直到合适匹配或者不符合为止。这样比较由于每次都要重头比较,效率太低。BM模式串的比较是从右到左,模式串的移动是从左到右,借用坏字符规则和好后缀规则,在每一原创 2020-08-13 00:51:16 · 223 阅读 · 0 评论 -
LeetCode二分法汇总-2
最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。输入: ["flower","flow","flight"]输出: "fl"输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。所有输入只包含小写字母 a-z 。首先选择数组里最小的一个,他可能是公共前缀的最大长度。然后以这个数来进行二分法,当公共值等于mid的时候,有可能相等或者大于;当小于的时候,就mid-1继续判断class Solutio原创 2020-08-11 17:21:00 · 194 阅读 · 0 评论 -
LeetCode算法汇总-3
字符串简介字符串的基本操作对象通常是字符串整体或者其子串 I LIKE LEETCODE 反向输出后,更希望是LEETCODE LIKE I 这时候操作对象就是这些子串字符串操作比其他数据类型更复杂比较函数Java的字符串比较有三者方法 compareTo:比较的是数据的大小;equals:比较的是内容是否相等;==:比较的是是否来自统一引用package 数组和字符串;/** * @author sandu * @create 2020-08-11 14:14 */pu原创 2020-08-11 17:20:21 · 226 阅读 · 0 评论 -
LeetCode算法汇总-2
二维数组只是将数组中的每个元素变成了一维数组,本质上仍然是一个一维数组,可以看成一个矩阵旋转矩阵给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。不占用额外内存空间能否做到?给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3]]给定 matrix =[ [ 5, 1, 9,11]原创 2020-08-09 21:55:12 · 200 阅读 · 0 评论 -
LeetCode算法汇总-1
数组和字符串集合、列表和数组集合:集合里的元素类型不一定相同;集合里的元素没有顺序列表(线性列表):具有顺序,且长度可变数组:列表的实现方式之一。在Java中元素类型必须一致,有索引,从0开始,连续存储数组的操作读取元素:从 0 开始。对于数组,计算机会在内存中申请一段连续的空间,记下索引为 0 处的内存地址。比如 C O D E R ,想找 D 的时候,就从 C 的内存地址开始,加上索引值。因此时间复杂度是常数级别,O(1)。查找元素:查找元素时,从头开始向后查找,没有就报异常原创 2020-08-06 18:11:19 · 220 阅读 · 0 评论 -
LeetCode贪心算法汇总-1
贪心算法在对问题求解时,总是做出在当前看来是最好的选择,不从整体最优上加以考虑,所做的仅仅是在某种意义上的局部最优解。没有固定的算法框架。贪心算法不是对所有问题都能的对整体最优解,选择贪心策略必须具备无后效性。基本思路:针对一组数据,我们定义了限制值和期望值,希望从中选出几个数据,在满足限制值的情况下,期望值最大。尝试这个问题是否可以用贪心算法解决我们举几个例子看下贪心算法产生的结果是否是最优的,大部分情况下,举几个例子验证下就昆虫,严格地证明贪心算法的正确性,是非常复杂的,需要涉及比较多的数原创 2020-08-06 18:06:53 · 267 阅读 · 0 评论 -
LeetCode二分法汇总-1
二分法搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。输入: [1,3,5,6], 5输出: 2输入: [1,3,5,6], 2输出: 1输入: [1,3,5,6], 7输出: 4输入: [1,3,5,6], 0输出: 0方法二分法适用于有序数组中查找整数值。定义low为数组第一个索引,high为最后一个索引,mid为中间索引(取左)。target每次和nums[原创 2020-08-06 18:03:11 · 258 阅读 · 0 评论