算法
算法学习
F道人
若目标是远方,便只顾风雨兼程!
展开
-
LeetCode常见经典算法——KMP算法
常见经典算法KMP算法参考:https://www.bilibili.com/video/BV1jb411V78H?from=search&seid=6567338116212695926关键字:有效回溯、最大公共前后缀长度、样本串的next数组(下一步回溯样本串的比较位置)类库中String类的indexOf();方法采用的KMP算法,常规方法——依次暴力遍历,如果不匹配回溯到母字符串下一位置继续进行比较!在这里存在一个问题,回溯到下一位置可能导致很多多余比较操作!例如下面示例:母串:原创 2021-01-19 17:11:47 · 2518 阅读 · 1 评论 -
LeetCode链表篇(一):常见简单题型
链表的一些简单题型反转链表链表中倒数第k个节点从尾到头打印链表判断链表中是否有环链表中环的起始点剑指Offer 24. 反转链表参考网址:https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof/示例代码:(双指针)/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next;原创 2020-11-04 15:15:44 · 288 阅读 · 0 评论 -
LeetCode数组篇(七):数组中的K-diff数对
题目给定一个整数数组和一个整数 k, 你需要在数组里找到不同的 k-diff 数对。这里将 k-diff 数对定义为一个整数对 (i, j), 其中 i 和 j 都是数组中的数字,且两数之差的绝对值是 k.示例 1:输入: [3, 1, 4, 1, 5], k = 2输出: 2解释: 数组中有两个 2-diff 数对, (1, 3) 和 (3, 5)。尽管数组中有两个1,但我们只应返回不同的数对的数量。示例2:输入:[1, 2, 3, 4, 5], k = 1输出: 4解释: 数组中有原创 2020-05-24 00:23:17 · 125 阅读 · 0 评论 -
LeetCode数组篇(六):盛最多水的容器
题目:盛最多水的容器给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。示例:输入:[1,8,6,2,5,4,8,3,7]输出:49原创 2020-05-22 23:23:04 · 204 阅读 · 0 评论 -
LeetCode数组篇(五):最大正方形问题(动态规划)
题目在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入: 1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4两种思路:一:暴力筛查计算出每一个点(以该点为正方形的左上点)最大正方形面积。代码这里不写了,时间复杂度过高。第二种思路:动态规划创建同样大小的二维数组int[][] dp,数组存放的值为dp[i][j] 表示以该点为正方形右下角(或者说该点左上方存在最大正方形)的最大正方形边长原创 2020-05-21 23:05:23 · 958 阅读 · 0 评论 -
LeetCode数组篇(四):最佳观光组合
题目给定正整数数组A,A[i] 表示第 i 个观光景点的评分,并且两个景点 i 和 j 之间的距离为j - i。一对景点(i < j)组成的观光组合的得分为(A[i] + A[j] + i - j):景点的评分之和减去它们两者之间的距离。返回一对观光景点能取得的最高分。示例:输入:[8,1,5,2,6]输出:11解释:i = 0, j = 2, A[i] + A[j] + i - j = 8 + 5 + 0 - 2 = 11提示:2 <= A.length <= 500原创 2020-05-20 23:25:43 · 238 阅读 · 0 评论 -
LeetCode数组篇(三):买卖股票的最佳时机
题目给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。示例原创 2020-05-20 00:17:12 · 305 阅读 · 0 评论 -
LeetCode数组篇(二):船依次运货物问题(贪心+二分查找)
贪心算法以及二分查找的运用感悟:思考问题角度要进行转化,无思路时,转化下着眼点!题目:传送带上的包裹必须在 D 天内从一个港口运送到另一个港口。传送带上的第 i个包裹的重量为weights[i]。每一天,我们都会按给出重量的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。返回能在 D 天内将传送带上的所有包裹送达的船的最低运载能力。示例 1:输入:weights = [1,2,3,4,5,6,7,8,9,10], D = 5输出:15解释:船舶最低载重 15 就能够在 5原创 2020-05-19 10:45:04 · 1542 阅读 · 0 评论 -
LeetCode数组篇(一):数组中存在多少对数之和能被60整除
题目:在歌曲列表中,第 i 首歌曲的持续时间为 time[i] 秒。返回其总持续时间(以秒为单位)可被 60 整除的歌曲对的数量。形式上,我们希望索引的数字 i 和 j 满足 i < j 且有(time[i] + time[j]) % 60 == 0。示例 1:输入:[30,20,150,100,40]输出:3解释:这三对的总持续时间可被 60 整数:(time[0] = 30, time[2] = 150): 总持续时间 180(time[1] = 20, time[3] = 10原创 2020-05-18 00:19:53 · 403 阅读 · 0 评论 -
LeetCode(一):二叉树最小深度,二维平面多点共线个数
LeetCode刷题(一)道人现在在LeetCode上刷题,争取日更,同时也会更新一些数据结构的相关知识。希望对各位道友有所帮助。道人最近生活,工作都有很多不顺之处,也很苦恼,技术上也想有所突破,但是越发觉得自己不会的不懂的很多很多,各种压力接踵而来,但是道人我还是坚信所有付出,总会看到收获,努力总会使生活越来越好!现在道人在刷LeetCode,努力提升算法能力,一年后的今天,再来看看这一年的变化与成长。题型一:question:求给定二叉树的最小深度。最小深度是指树的根结点到最近叶子结点的最短路径原创 2020-05-17 00:30:18 · 260 阅读 · 0 评论 -
网格从左下角移动到右上角有多少种路线(动态规划)
在面试中遇到的一个问题,蚂蚁从(m,n)的网格一角爬到对角(不能往回爬),查了一些东西,自己写下自己的一些理解,望大神指点。从网格的一角爬到对角,有多少中爬法。理解部分:将其进行转换,转换为从(m,n)坐标到(0,0)坐标有多少种移动方法。(只能下移,左移)。 。 。 。 。 。。 。 。 。 。 。1 3 6 10 。 。1 2 3 4 。 。原创 2017-11-28 22:50:55 · 6273 阅读 · 0 评论