leecode和剑指offer刷题
闲来无事就刷题
coding丁
中山大学,
math and computer
保持谦卑,保持自信,充满动力,充满野心
展开
-
根据IP的字符串复原IP地址
leetcode93 复原IP地址之前面试字节跳动遇到该题,当时时间较短,只有大致思路和基本首先框架,没有AC了,今天又正好看见该题。93. 复原IP地址给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 ‘.’ 分隔。示例:输入: "25525511135"输出: ["255.255.11.135", "255.255.111.35"]分析:首先明白,什么是一个合法的IP地址:应该分成原创 2020-06-10 15:34:52 · 593 阅读 · 0 评论 -
leetcode 经典二分查找算法题目(思路、方法、code)
leetcode 经典二分查找算法题目(思路、方法、code)文章目录leetcode 经典二分查找算法题目(思路、方法、code)[35. 搜索插入位置](https://leetcode-cn.com/problems/search-insert-position/)[69. x 的平方根](https://leetcode-cn.com/problems/sqrtx/)[34. 在排序数组中查找元素的第一个和最后一个位置](https://leetcode-cn.com/problems/find-原创 2020-05-29 09:52:40 · 1913 阅读 · 0 评论 -
Trie树(字典树)相关概念以及实现和练习
Trie树(字典树)相关概念以及实现和联系文章目录Trie树(字典树)相关概念以及实现和联系Trie树基本概述[208. 实现 Trie (前缀树)](https://leetcode-cn.com/problems/implement-trie-prefix-tree/)[648. 单词替换](https://leetcode-cn.com/problems/replace-words/)Trie树基本概述Trie树,又称字典树或前缀树,是一种有序的、用于统计、排序和存储字符串的数据结构,它的关键字原创 2020-05-27 09:25:04 · 434 阅读 · 0 评论 -
leetcode并查集相关经典题目(思路、分析、代码)
leetcode并查集相关经典题目(思路、分析、代码)关于并查集的一些基础知识以及应用,可以看我之前的一篇文章:一文搞定并查集看完那篇文章基本可以完全掌握并查集文章目录leetcode并查集相关经典题目(思路、分析、代码)[547. 朋友圈](https://leetcode-cn.com/problems/friend-circles/)[1319. 连通网络的操作次数](https://leetcode-cn.com/problems/number-of-operations-to-make-ne原创 2020-05-22 09:17:32 · 5722 阅读 · 2 评论 -
leetcode买卖股票问题(思路、方法、code)
一文解决Leetcode买卖股票问题对于前3个问题,均采用了比较巧妙的解法。由于第4个问题具有非常强的泛型,因此采用了DP,第4个问题的dp如果理解的话,实际上只需要稍加修改状态便可以用该dp思路应用于所有的6个题中。在后两个问题便是基于该思路用dp解决的。文章目录一文解决Leetcode买卖股票问题[121. 买卖股票的最佳时机](https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/)[122. 买卖股票的最佳时机 II](原创 2020-05-18 12:10:36 · 1655 阅读 · 0 评论 -
leetcode 子数组 相关问题(分析+代码)
文章目录[560. 和为K的子数组](https://leetcode-cn.com/problems/subarray-sum-equals-k/)[209. 长度最小的子数组](https://leetcode-cn.com/problems/minimum-size-subarray-sum/)[713. 乘积小于K的子数组](https://leetcode-cn.com/problems/subarray-product-less-than-k/)[1248. 统计「优美子数组」](https:/原创 2020-05-16 11:22:15 · 563 阅读 · 0 评论 -
leetcode 经典宽搜BFS深搜DFS题目(思路、方法、code)
leetcode 经典宽搜BFS深搜DFS题目(思路、方法、code)BFS和DFS的经典应用就是在树和图中的遍历。地图的搜索问题通常都可以用BFS和DFS解决,下面题目非常典型,并且很多题目类似,自己如果能够独立完成基本就掌握了BFS和DFS以及地图的遍历问题。文章目录leetcode 经典宽搜BFS深搜DFS题目(思路、方法、code)[200. 岛屿数量](https://leetcode-cn.com/problems/number-of-islands/)[127. 单词接龙](https:原创 2020-05-14 23:33:43 · 1769 阅读 · 0 评论 -
leetcode 经典动态规划DP算法题目(思路、方法、code)
leetcode 经典动态规划DP算法题目(思路、方法、code)动态规划最重要的在于设计DP数组,找到相应的动态转移方程文章目录leetcode 经典动态规划DP算法题目(思路、方法、code)[70. 爬楼梯](https://leetcode-cn.com/problems/climbing-stairs/)[198. 打家劫舍](https://leetcode-cn.com/problems/house-robber/)[213. 打家劫舍 II](https://leetcode-cn.co原创 2020-05-12 19:22:20 · 2819 阅读 · 0 评论 -
leetcode 经典哈希表与字符串题目(思路、方法、code)
文章目录[409. 最长回文串](https://leetcode-cn.com/problems/longest-palindrome/)[290. 单词规律](https://leetcode-cn.com/problems/word-pattern/)[205. 同构字符串](https://leetcode-cn.com/problems/isomorphic-strings/)[49. 字母异位词分组](https://leetcode-cn.com/problems/group-anagrams原创 2020-05-11 22:18:06 · 659 阅读 · 0 评论 -
leetcode 经典 图相关题目(思路、方法、code)
图的问题基本就是 BFS和DFS,还有拓扑排序、最短路、最小生成树,有时也会用并查集进行分类,还要注意节点的入度出度等特征。文章目录[207. 课程表](https://leetcode-cn.com/problems/course-schedule/)[210. 课程表 II](https://leetcode-cn.com/problems/course-schedule-ii/)[684. 冗余连接](https://leetcode-cn.com/problems/redundant-connec原创 2020-05-10 11:56:22 · 2869 阅读 · 0 评论 -
leetcode二叉搜索树经典题目(思路、方法、code)
文章目录二叉搜索树的简介[98. 验证二叉搜索树](https://leetcode-cn.com/problems/validate-binary-search-tree/)[700. 二叉搜索树中的搜索](https://leetcode-cn.com/problems/search-in-a-binary-search-tree/)[701. 二叉搜索树中的插入操作](https://leetcode-cn.com/problems/insert-into-a-binary-search-tree/)原创 2020-05-09 12:32:42 · 1183 阅读 · 0 评论 -
leetcode 经典二叉树算法题目(思路、方法、code)
leetcode 经典二叉树算法题目(思路、方法、code)二叉树相关题目,主要就是要搞定二叉树的多种遍历方式,包括先序遍历,中序遍历,后序遍历,层次遍历,DFS遍历。掌握了所有的遍历方法,二叉树的题目基本就化简为一些简单问题去解决。二叉树由于其良好的结构,很多题目都可以化为递归去解决。文章目录leetcode 经典二叉树算法题目(思路、方法、code)[226. 翻转二叉树](https://leetcode-cn.com/problems/invert-binary-tree/)[112. 路径总原创 2020-05-08 20:53:37 · 935 阅读 · 0 评论 -
归并排序和逆序数(思路、code)
文章目录归并排序[315. 计算右侧小于当前元素的个数](https://leetcode-cn.com/problems/count-of-smaller-numbers-after-self/)归并排序归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治策略(分治法将问题分(divide)成一些小的问题然后递归求解,而**治(conquer)**的阶段则将分...原创 2020-05-07 15:21:37 · 331 阅读 · 0 评论 -
leetcode 经典回溯算法题目(思路、方法、code)
用于回顾数据结构与算法时刷题的一些经验记录回溯与递归都要注意剪枝,避免重复计算回溯的问题,一定要把整个树图画出来,然后再去考虑如何缩小问题,还要注意恢复状态回溯算法的大致模板:根据这个模板,然后根据自己画出的树图,基本所有回溯问题都可以搞定。void backtrack(已经做的选择, 选择列表): if 当前达到了结束位置: result.pus...原创 2020-05-07 11:28:15 · 2350 阅读 · 0 评论 -
leetcode经典堆相关题目(思路、方法、code)
用于回顾数据结构与算法时刷题的一些经验记录堆的题目大多还是较为复杂的文章目录[215. 数组中的第K个最大元素](https://leetcode-cn.com/problems/kth-largest-element-in-an-array/)[347. 前 K 个高频元素](https://leetcode-cn.com/problems/top-k-frequent-elements/)...原创 2020-05-05 16:56:32 · 1689 阅读 · 0 评论 -
leetcode 经典栈相关题目(思路、方法、code)
用于回顾数据结构与算法时刷题的一些经验记录栈的题目还是稍微有些难度的文章目录[20. 有效的括号](https://leetcode-cn.com/problems/valid-parentheses/)[155. 最小栈](https://leetcode-cn.com/problems/min-stack/)[946. 验证栈序列](https://leetcode-cn.com/prob...原创 2020-05-04 13:16:31 · 1258 阅读 · 0 评论 -
leetcode 经典贪心算法题目(思路、方法、code)
用于回顾数据结构与算法时刷题的一些经验记录(提出对应的贪心算法时最好自己举例子试试能否可行)文章目录[455. 分发饼干](https://leetcode-cn.com/problems/assign-cookies/)[376. 摆动序列](https://leetcode-cn.com/problems/wiggle-subsequence/)[402. 移掉K位数字](https://...原创 2020-05-03 12:56:16 · 3984 阅读 · 1 评论 -
leetcode经典链表相关题目(思路、方法、code)
用于回顾数据结构与算法时刷题的一些经验记录(链表题目最好自己动手画一画,可以较为清晰地知道指针的处理)文章目录[206. 反转链表](https://leetcode-cn.com/problems/reverse-linked-list/)[92. 反转链表 II](https://leetcode-cn.com/problems/reverse-linked-list-ii/)160. [...原创 2020-05-01 21:13:33 · 610 阅读 · 0 评论 -
合并两个有序的列表(递归非递归双解法)
合并两个有序的列表(递归非递归双解法)题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。递归版本思路:终止条件:每次判断是否一个链表是空,如果有空,则返回另一个链表头即可如果两个链表都是非空,则找到值更小的链表项,将其加入结果。然后很容易发现问题现在变为了形式一致但规模缩小的问题(递归版本非常简洁,实现非常容易)#include&...原创 2020-04-28 19:00:08 · 555 阅读 · 0 评论 -
寻找二叉树中序遍历的下一个节点
寻找二叉树中序遍历的下一个节点题目给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。分析:首先需要了解中序遍历的顺序:中序遍历左子树遍历根结点中序遍历右子树对图中的数中序遍历序列则为 : D B A E C F因此参考该图,考虑如何确定一个节点的中序遍历的后一个节点结论如下:如果该...原创 2020-04-27 16:40:02 · 1313 阅读 · 0 评论 -
旋转数组的最小数字(二分查找思想)
旋转数组的最小数字题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。分析:原始数组为一个非递减排序,因此,我们旋转后,可知该数组应当是两个非递减序列组成,并且...原创 2020-04-27 13:14:09 · 197 阅读 · 0 评论 -
根据前序与中序序列重构二叉树
根据前序与中序序列重构二叉树题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。分析:重构二叉树的条件是已知中序序列以及前序序列和后序序列的其中一个。该题中,已知前序序列和中序序列。首先考虑这两种序...原创 2020-04-27 11:47:33 · 543 阅读 · 0 评论 -
青蛙跳台阶问题 (递归与数学归纳)
青蛙跳台阶问题:普通跳台阶一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)分析:设f(n)表示跳上第n个台阶的跳法数目,则很容易想到 f(1)=1,f(2)=2 ,当n>2时,则跳到第n个台阶前的位置,一定是在第(n-1)个台阶或者第(n-2)个台阶上,因此在此处得到数学关系为 f(n)=f(n-1)+f(n-2)...原创 2020-04-20 18:23:51 · 2767 阅读 · 0 评论 -
用两个栈模拟队列
用两个栈来实现一个队列栈:栈特点是后进先出,即最后push进的元素最早pop出来。队列:队列的特点是先进先出,第一个进入队列的元素将第一个出来c++ STL 中有stack和queue的定义,使用方法为:stack<int> a;queue<string> q;stack的重要的函数:empty() 堆栈为空则返回真pop() 移除栈顶元素 ...原创 2020-04-20 16:17:30 · 629 阅读 · 0 评论 -
leecode 111. Climbing Stairs
111. Climbing StairsDescription假设你正在爬楼梯,需要n步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部?Example 1: Input: n = 3 Output: 3 Explanation: 1) 1, 1, 1 2) 1, 2 3) 2, 1 total 3.Example 2: Input: ...原创 2019-09-12 20:41:48 · 219 阅读 · 0 评论 -
leecode 41. Maximum Subarray
41. Maximum SubarrayDescription:给定一个整数数组,找到一个具有最大和的子数组,返回其最大和《子数组最少包含一个数》examples:Input: [−2,2,−3,4,−1,2,1,−5,3]Output: 6Explanation: the contiguous subarray [4,−1,2,1] has the largest sum = 6...原创 2019-09-12 21:22:41 · 140 阅读 · 0 评论