数据结构和算法
文章平均质量分 69
总结了常见数据结构和算法的基础
Crazy Code Farmer
码农的世界
展开
-
leetcode-873. 最长的斐波那契子序列的长度【动态规划】
目录题目解法一:暴力解法解法二:动态规划题目最长的斐波那契子序列的长度如果序列X_1, X_2, ..., X_n满足下列条件,就说它是斐波那契式的:n >= 3对于所有i + 2 <= n,都有X_i + X_{i+1} = X_{i+2}给定一个严格递增的正整数数组形成序列 arr,找到 arr中最长的斐波那契式的子序列的长度。如果一个不存在,返回0 。(回想一下,子序列是从原序列 arr中派生出来的,它从 arr中删掉任意数量...原创 2021-10-21 23:35:46 · 348 阅读 · 0 评论 -
leetcode-5. 最长回文子串【字符串】
目录题目解法一:暴力解法解法二:动态规划题目最长回文子串给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。示例 2:输入:s = "cbbd"输出:"bb"示例 3:输入:s = "a"输出:"a"示例 4:输入:s = "ac"输出:"a"提示:1 <= s.length <= 1000s 仅由数字和英文字母(大写和/或小写)组成原创 2021-10-19 23:43:21 · 188 阅读 · 0 评论 -
leetcode-3. 无重复字符的最长子串【字符串】
目录题目思路题目无重复字符的最长子串给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: s = "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"wke",所以其长度为 3。...原创 2021-10-19 00:31:29 · 185 阅读 · 0 评论 -
leetcode-225. 用队列实现栈【队列/栈】
题目用队列实现栈用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead操作返回 -1 )示例 1:输入:["CQueue","appendTail","deleteHead","deleteHead"][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入:["CQueue","deleteHead",".原创 2021-10-14 01:19:12 · 104 阅读 · 0 评论 -
leetcode-09. 用两个栈实现队【栈/队列】
目录题目思路题目剑指 Offer 09. 用两个栈实现队列用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead操作返回 -1 )示例 1:输入:["CQueue","appendTail","deleteHead","deleteHead"][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入.原创 2021-10-14 00:48:58 · 89 阅读 · 0 评论 -
leetcode-189. 旋转数组【数组】
目录题目思路题目旋转数组给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。示例 1:输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例2:输入:nums = [-1,-100,3,99], k = 2输出:[3,99,-1,-10...原创 2021-10-12 23:51:23 · 103 阅读 · 0 评论 -
leetcode-61. 旋转链表【链表】
目录题目思路力扣风采题目61. 旋转链表给你一个链表的头节点head,旋转链表,将链表每个节点向右移动k个位置。示例 1:输入:head = [1,2,3,4,5], k = 2输出:[4,5,1,2,3]示例 2:输入:head = [0,1,2], k = 4输出:[2,0,1]提示:链表中节点的数目在范围 [0, 500] 内-100 <= Node.val <= 1000 <= k <= 2 *...原创 2021-10-11 01:07:37 · 129 阅读 · 0 评论 -
leetcode-206. 反转链表【链表】
目录题目思路力扣风采题目反转链表给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]提示:链表中节点的数目范围是 [0, 5000]-5000 <= Node.val <= 5000来源:力扣(LeetCode)链接:https:.原创 2021-10-10 23:55:04 · 92 阅读 · 0 评论 -
leetcode-2. 两数相加【链表】
目录题目:两数相加思路力扣风采题目:两数相加给你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0开头。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/add-two-numbers示例 1:输入:l1 = [2,4,3], l2 = [...原创 2021-10-10 00:54:10 · 264 阅读 · 0 评论 -
leetcode-1281. 整数的各位积和之差
目录题目思路:力扣风采题目1281. 整数的各位积和之差给你一个整数n,请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。示例 1:输入:n = 234输出:15解释:各位数之积 = 2 * 3 * 4 = 24各位数之和 = 2 + 3 + 4 = 9结果 = 24 - 9 = 15示例 2:输入:n = 4421输出:21解释:各位数之积 = 4 * 4 * 2 * 1 = 32各位数之和 = 4 + 4 + 2 + 1 ...原创 2021-10-09 00:15:57 · 321 阅读 · 0 评论 -
leetcode-7.字符串反转【字符串】
目录题目:7. 整数反转图解:思路:完整代码:力扣风采(不是最优再接再励)题目:7. 整数反转给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围[−231,231− 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。示例 1:输入:x = 123输出:321示例 2:输入:x = -123输出:-321示例 3:输入:x = 120...原创 2021-10-08 23:24:16 · 159 阅读 · 0 评论 -
多路查找树(B树,B+树)
目录多路树理解B树(B-Tree树)B+树B+树应用场景B和B+的区别多路树理解多路查找树(muitl-way search tree),其每一个节点的孩子数可以多于两个,且每一个节点处可以存储多个元素。(注意:二叉树是两个叉 ,多路树一个节点不止两个叉,不清楚的查看我【重温数据结构和算法】那篇博客)B树(B-Tree树)是对二叉查找树的改进。它的设计思想是,将相关数据尽量集中在一起,以便一次读取多个数据,减少硬盘操作次数。一棵m阶的B 树 (m叉树)的特性如下:原创 2021-04-27 19:28:43 · 619 阅读 · 0 评论 -
重温数据结构和算法
算法和数据结构(重温数据结构和算法)一.简介 当今中型,大型互联网公司算法和数据结构是必考题,工作中如果遇到底层组件开发良好的数据结构和算法设计必不可少,因此学好数据结构和算法作为程序员是必修的内功,练好内功基础的理论搞清楚非常必要,所谓工欲善其事必先利其器。下面这边文章会介绍一些理论知识附加一些经典案例。常见数据结构:常见算法:二.算法复杂度1.时间复杂度大O复杂度表示法看看什么是时间复杂度: int sum(int n){ in...原创 2021-04-13 14:12:29 · 339 阅读 · 0 评论