算法
leetcode高频算法题、剑指offer算法题
糖糖rh
这个作者很懒,什么都没留下…
展开
-
leetcode_动态规划
目录1. 斐波那契数列70. 爬楼梯198. 打家劫舍213. 打家劫舍 II信件错排母牛生产2. 矩阵路径64. 最小路径和62. 不同路径3. 数组区间303. 区域和检索 - 数组不可变413. 等差数列划分343. 整数拆分*279. 完全平方数91. 解码方法5. 最长递增子序列300. 最长上升子序列* (中等)646. 最长数对链*1. 斐波那契数列70. 爬楼梯假设你正在爬...原创 2020-09-15 15:29:58 · 761 阅读 · 0 评论 -
leetcode_二分查找
文章目录69. x 的平方根744. 寻找比目标字母大的最小字母540. 有序数组中的单一元素69. x 的平方根实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。题解:1. 从0开始枚举class Solution原创 2020-07-28 17:17:59 · 312 阅读 · 0 评论 -
leetcode_贪心思想
文章目录455. 分发饼干435. 无重叠区间452. 用最少数量的箭引爆气球455. 分发饼干假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。注意:你可以假设胃口值为正。一个小朋友最多只原创 2020-06-10 16:51:47 · 361 阅读 · 0 评论 -
leetcode_双指针
文章目录原创 2020-05-18 12:49:40 · 177 阅读 · 0 评论 -
leetcode_位运算
文章目录原理基本原理位与运算技巧移位运算mask 计算Java 中的位操作461. 汉明距离136. 只出现一次的数字268. 缺失数字原理基本原理0s 表示一串 0,1s 表示一串 1。x ^ 0s = x x & 0s = 0 x | 0s = xx ^ 1s = ~x x & 1s = x x | 1s = 1sx ^ x = 0 x & x = x x | x = x利用 x ^ 1s = ~x 的原创 2020-05-15 13:10:46 · 699 阅读 · 0 评论 -
leetcode_图
文章目录785. 判断二分图207. 课程表785. 判断二分图给定一个无向图graph,当这个图为二分图时返回true。如果我们能将一个图的节点集合分割成两个独立的子集A和B,并使图中的每一条边的两个节点一个来自A集合,一个来自B集合,我们就将这个图称为二分图。graph将会以邻接表方式给出,graph[i]表示图中与节点i相连的所有节点。每个节点都是一个在0到graph.length...原创 2020-05-09 14:41:39 · 262 阅读 · 0 评论 -
leetcode_数组与矩阵
文章目录283. 移动零566. 重塑矩阵485. 最大连续1的个数283. 移动零给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。题解:1. 冒泡思想每一趟扫描遇到0就将其与后一个数交换,直...原创 2020-05-06 14:59:55 · 536 阅读 · 0 评论 -
leetcode_字符串
字符串循环移位包含编程之美 3.1s1 = AABCD, s2 = CDAAReturn : true题解: 给定两个字符串 s1 和 s2,要求判定 s2 是否能够被 s1 做循环移位得到的字符串包含。s1 进行循环移位的结果是 s1s1 的子字符串,因此只要判断 s2 是否是 s1s1 的子字符串即可。字符串循环移位编程之美 2.17s = "abcd123" k = 3R...原创 2020-04-09 21:31:50 · 430 阅读 · 0 评论 -
leetcode_链表
目录160. 相交链表206. 反转链表(简单)83. 删除排序链表中的重复元素 (简单)19. 删除链表的倒数第N个节点 (中等)24. 两两交换链表中的节点 (中等)445. 两数相加 II * (中等)234. 回文链表*(中等)725. 分隔链表* (中等)328. 奇偶链表 (中等)160. 相交链表编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1...原创 2020-04-08 15:00:05 · 415 阅读 · 0 评论 -
栈和队列
这里写目录标题232. 用栈实现队列 (简单)225. 用队列实现栈 (简单)155.最小栈(简单)20. 有效的括号232. 用栈实现队列 (简单)使用栈实现队列的下列操作:push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。peek() – 返回队列首部的元素。empty() – 返回队列是否为空。示例:MyQueue queue = ne...原创 2020-04-06 21:29:11 · 131 阅读 · 0 评论 -
前缀树
时间复杂度与数据量无关,与样本长度有关。每个节点保存三个数据:path: 有多少节点滑过end: 多少节点以当前字符结束TrieNode[] nexts: 链接数组,链接的索引隐式地定义了对应地字符。链接数组保存了下一个节点的链接。JAVA代码public class TrieTree { /***************定义节点结构******************...原创 2020-04-04 14:44:14 · 158 阅读 · 0 评论 -
并查集
概念:检查两个元素是否属于同一个集合.两个元素所属集合合并成同一个集合.设元素A属于集合 set1。元素B属于集合set2.直观思路:用list结构分别装载两个集合,则有 list1 对应集合set1, list2对应集合set2查看list1中是否存在B,即可判断A和B是否同属于一个集合。合并:将list1 和list2连接起来缺点:无法做到迅速查找和迅速合并.采用树状结构...原创 2020-03-26 12:26:54 · 165 阅读 · 0 评论 -
哈希函数和哈希表
380. 常数时间插入、删除和获取随机元素来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/insert-delete-getrandom-o1设计一个支持在平均 时间复杂度 O(1) 下,执行以下操作的数据结构。insert(val):当元素 val 不存在时,向集合中插入该项。remove(val):元素 val 存在时,从集合中...原创 2020-04-04 16:58:53 · 155 阅读 · 0 评论 -
二叉搜索树
二叉搜索树原创 2020-03-31 12:54:28 · 240 阅读 · 0 评论 -
二叉树
实现二叉树的先序、中序、后续遍历,包括递归方式和非递归方式原创 2020-03-23 09:48:40 · 657 阅读 · 0 评论 -
算法——高频题
桶用数组结构实现大小固定的队列和栈队列:先进先出假设固定大小为len,size为当前队列大小,start表示队头,end表示队尾。若size<0 或 size>len, 则越界。出队,end+1位置覆盖一个数。size++; 若end到达数组尾部,则end 返回到数组首部;否则end++入队,start 位置减去一个数。start–; size–栈:先进后出假设固定...原创 2020-03-15 14:29:41 · 355 阅读 · 0 评论 -
leetcode 排序
归并排序21.合并两个有序链表将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4JAVA代码://类似于归并排序的归并部分//迭代法//没有头指针/** * Definition for singl...原创 2020-03-13 20:43:36 · 106 阅读 · 0 评论 -
排序算法
冒泡排序原创 2020-03-10 15:51:54 · 147 阅读 · 0 评论 -
leetcode 数组—螺旋矩阵 ver2
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]]题解:T,B,L,R分别表示未扫描矩阵的边界。初始时,T=0,B=n-1,L=0,R=n-1; 直到整个矩阵扫完完毕结束。先从左到右行扫描,第T行的第L列到第R列,即num...原创 2020-03-02 22:20:15 · 136 阅读 · 0 评论 -
leetcode 数组—幂集
幂集。编写一种方法,返回某集合的所有子集。集合中不包含重复的元素。说明:解集不能包含重复的子集。示例: 输入: nums = [1,2,3] 输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]题解:二进进制首先知道n个元素的集合的幂集个数为: n^2nums = [1,2,3], 长度为...原创 2020-03-02 19:34:29 · 817 阅读 · 1 评论