算法百题
文章平均质量分 54
Lampard杰
/*2017年4月6日*/ 我开始了我的coding之路,希望毕业之后回看这里,能达到理想的目标。
/*2020年3月11日*/ 我正式参与工作,在君海成为一个游戏开发者。希望自己保持初心,keep learning,keep coding。
/*2021年3月25日*/ 人生第一次跳槽去到了网易游戏,希望尽快适应这个环境,尽快成为技术更棒的人。
展开
-
【算法百题之五十八】两数相除
【算法百题之五十八】两数相除 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的问题是:两数相除 示例:输入: dividend = 10, divisor = 3输出: 3解释: 10/3 = truncate(3.33333..) = truncate(3) = 3输入: dividend = 7, divisor = -3输出...原创 2021-01-18 22:37:45 · 188 阅读 · 0 评论 -
【算法百题之六十】下一个排列
【算法百题之六十】下一个排列 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的问题是:下一个排列 示例:输入:nums = [1,2,3] 输出:[1,3,2]输入:nums = [3,2,1] 输出:[1,2,3]输入:nums = [1,1,5] 输出:[1,5,1]题解:题目的意思是若当前三个数组合起来,并不是最大的数,则输出仅比其大的...原创 2021-01-27 15:59:51 · 145 阅读 · 0 评论 -
【算法百题之五十九】串联所有单词的子串
【算法百题之五十九】串联所有单词的子串 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的问题是:串联所有单词的子串 示例:输入: s = "barfoothefoobarman", words = ["foo","bar"]输出:[0,9]解释:从索引 0 和 9 开始的子串分别是 "barfoo" 和 "foobar" 。输出...原创 2021-01-21 17:07:10 · 141 阅读 · 0 评论 -
【算法百题之五十七】删除排序数组中的重复项
【算法百题之五十七】删除排序数组中的重复项 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的问题是:删除排序数组中的重复项,要求时间复杂度是o(1)示例:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度 5, 并且原数组 ...原创 2021-01-11 14:31:59 · 129 阅读 · 0 评论 -
【算法百题之五十六】两两交换结点
【算法百题之五十六】两两交换结点 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的问题是:两两交换结点示例:输入:head = [1,2,3,4]输出:[2,1,4,3]输入:head = []输出:[]输入:head = [1]输出:[1]思路:递归,比较简单就不多说了算法代码:ListNode* swapPairs(ListNode* head) { i...原创 2021-01-09 18:12:48 · 229 阅读 · 0 评论 -
【算法百题之五十五】合并K个升序链表
【算法百题之五十五】合并K个升序链表 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的问题是:合并K个升序链表 示例:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[ 1->4->5, 1->3->4, 2->6]将它们合并到一个有序链表中得到。1->...原创 2021-01-07 17:37:16 · 180 阅读 · 0 评论 -
【算法百题之五十四】括号生成
【算法百题之五十四】括号生成 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的问题是:括号生成 示例:输入:n = 3输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ]思路:这道题的思路是深度优先遍历dfs来回溯剪枝。因为左括号无论什么时候都可以...原创 2021-01-06 21:52:31 · 225 阅读 · 0 评论 -
【算法百题之五十三】合并两个有序链表
【算法百题之五十三】合并两个有序链表 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的问题是:合并两个有序链表 示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4 链表结点结构:struct ListNode { int val; ListNode *next; ListNode()...原创 2020-12-18 18:47:03 · 469 阅读 · 1 评论 -
【算法百题之五十二】有效的括号
【算法百题之五十二】有效的括号 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的问题是:有效的括号 示例:输入: "()"输出: true输入: "()[]{}"输出: true输入: "(]"输出: false输入: "([)]"输出: false输入: "{[]}"输出: true思路:审题审题一定要审题,因为不审好题我走不少弯路。这道题最好的做法是使用...原创 2020-12-14 11:28:40 · 122 阅读 · 0 评论 -
【算法百题之五十一】删除链表的第n个结点
【算法百题之五十一】删除链表的第n个结点 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的问题是:删除链表的第n个结点 示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.思路:要求时间复杂度为log(n),那我们就用空间换时间,使用向量把读到的结点存起来结...原创 2020-12-14 10:13:48 · 367 阅读 · 0 评论 -
【算法百题之五十】四数之和
【算法百题之五十】四数之和 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的问题是:四数之和 示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为:[ [-1, 0, 0, 1], [-2, -1, 1, 2], [-2, 0, 0, 2]]思路:究竟还有多少数之和......方法两个1....原创 2020-12-10 22:21:10 · 170 阅读 · 0 评论 -
【算法百题之四十九】电话号码的字母组合
【算法百题之四十九】电话号码的字母组合 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的问题是:电话号码的字母组合 示例: 输入:"23" 输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].思路:这题我感觉挺简单的...主要是考察c++字符串函数的调用,算法方面倒是两个循环就搞定了。也不知道为啥这道题能...原创 2020-12-10 10:34:21 · 203 阅读 · 0 评论 -
【算法百题之四十八】最接近数的三数之和
【算法百题之四十八】最接近数的三数之和 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的问题是:最接近数的三数之和 示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。思路:由于这道题和昨天做的算法题【三数之和】太像了,所以按照昨天的思路,很快啊,我们就找到了答案。回...原创 2020-12-09 21:50:45 · 278 阅读 · 0 评论 -
【算法百题之四十七】三数之和
【算法百题之四十七】三数之和 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的问题是:三数之和 示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]思路:这道题的难点有两个,其一是如何控制时间复杂度?对于暴力法来说直接来个三重循环nums【a】 + nums【b】 +num...原创 2020-12-08 14:46:18 · 382 阅读 · 0 评论 -
【算法百题之四十六】20分钟回顾四大寻路算法
【算法百题之四十六】20分钟回顾四大寻路算法 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天主要是总结归纳下之前写过的四大寻路算法 【5分钟看懂SPFA算法】 【5分钟看懂迪杰斯特拉算法】 【A*寻路算法】 【5分钟看懂弗洛伊德算法】 简而言之,对于寻找单个结点到单个结点之间的路径时,我们可以使用A*寻路算法。若是找单个节点到其余结点的所有最短路...原创 2020-12-07 18:19:54 · 419 阅读 · 0 评论 -
【算法百题之四十五】5分钟看懂SPFA算法(含代码)
【算法百题之四十五】5分钟看懂SPFA(贝尔曼夫德算法优化版)算法 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的探讨的问题是:学习SPFA单源最短路径(动态逼近法) 【spfa算法详解1】 【spfa算法详解2】 若对SPFA,或者最短单源路径算法没有概念的同学可以先看看以上的两篇博客。读完之后能够对该算法有一个大致的概念。今天主要和大家一起通过代码一步步实现该算法。今天用...原创 2020-12-07 17:32:12 · 866 阅读 · 1 评论 -
【算法百题之四十四】最长公共前缀
【算法百题之四十四】最长公共前缀 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的问题是:最长公共前缀 思路:这道题考点是字符串的截取,比较简单。关键在于如何提高效率以及注意边界问题string longestCommonPrefix(vector<string>& strs) { string res = strs.empty() ? "" : strs[0]; in...原创 2020-12-07 09:58:19 · 117 阅读 · 0 评论 -
【算法百题之四十三】5分钟看懂floyd(弗洛伊德)算法
【算法百题之四十三】5分钟看懂floyd(弗洛伊德)算法 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的探讨的问题是:学习floyd(弗洛伊德)算法 【弗洛伊德算法1】 【弗洛伊德算法2】 若对弗洛伊德算法概念不熟悉的朋友们可以先看看上面两篇博客,简单来说就是利用动态规划的方法,寻求任意两点之间的最短路径,我觉得概念解释得很不错的。今天主要和大家一起代码实战floyd...原创 2020-12-04 18:11:04 · 1019 阅读 · 0 评论 -
【算法百题之四十二】罗马数字转整数
【算法百题之四十二】罗马数字转整数 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的问题是:罗马数字转整数作为【整数转罗马数字】的姐妹篇,但是难度却降了不止一个级,贼简单。思路:字符串前连个字符相比较,一般来说是前一个会比后一个大,若不是的话就是那六种特殊情况,此时只需要一次跨越两个字符即可。int romanToInt(string s) { map<string, int> ...原创 2020-12-04 12:09:17 · 121 阅读 · 0 评论 -
【算法百题之四十一】5分钟看懂dijkstra(迪杰斯特拉)算法
【算法百题之四十一】5分钟看懂dijkstra(迪杰斯特拉)算法 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的探讨的问题是:学习dijkstra(迪杰斯特拉)算法。 【dijkstra入门博客1】 【dijikstra入门博客2】 若对迪杰斯特拉概念不熟悉的朋友们可以先看看上面两篇博客,我觉得概念解释得很不错的。今天主要和大家一起代码实战dijkstra ...原创 2020-12-03 21:13:59 · 970 阅读 · 0 评论 -
【算法百题之四十】整数转罗马数字
【算法百题之四十】整数转罗马数字 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的问题是:整数转罗马数字(贪心算法)思路:这道题主要是用到了贪心算法,从大往小一直把数字输出。什么是贪心算法呢?举个例子:生活中的经验:在以前还使用现金购物的时候,找零钱的时候一般商家会尽量选择面值大的纸币(硬币)给顾客,这样才会使得给顾客的纸币(硬币)张数最少,让顾客点钱的时候更方便。这道题也一样,由于已经定义...原创 2020-12-03 11:34:22 · 134 阅读 · 0 评论 -
【算法百题之三十九】年轻人不讲武德,5分钟学会A*算法
【算法百题之三十九】年轻人不讲武德,5分钟学会A*算法 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的探讨的问题是:实战8方向A*寻路算法。 【A*入门博客1】 【A*入门博客2】 若对A*概念不熟悉的年轻人们可以先看看上面两篇博客,我觉得概念解释得很不错的。今天主要和大家一起代码实战A*,先上效果图: (1)A*算法的主要构成 在我看来,...原创 2020-12-02 20:57:00 · 1104 阅读 · 0 评论 -
【算法百题之三十八】盛最多水的容器
【算法百题之三十八】盛最多水的容器 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的问题是:盛最多水的容器(别看这个题目那么low,我又又又又超时了QAQ) class Solution {public: int maxArea(vector<int>& height) { // 函数头 }};思路:看完题目大致就知道题目需要求出一lowI...原创 2020-12-02 11:41:31 · 134 阅读 · 0 评论 -
【算法百题之三十七】回文数
【算法百题之三十七】回文数 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的问题是:回文数思路:把int转化为string类型,然后遍历比较str【i】是否与str【str.length() - i - 1】相等即可int isPalindrome(int x) { string str = to_string(x); int length = str.length(); for (i...原创 2020-12-01 10:48:28 · 175 阅读 · 0 评论 -
【算法百题之三十六】字符串转换整数
【算法百题之三十六】字符串转换整数 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的问题是:字符串转换整数 思路:从头遍历字符串的每一个字符,遇到“+”,“-”,空字符和数字的时候执行逻辑,当遇到非以上字符或者字符串遍历完毕的时候结束循环。最后输出结果的时候要判断边界,比INT_MAX大要输出INT_MAX,比INT_MIN小要输出INT_MIN。#define NEGATIVE...原创 2020-11-30 16:49:51 · 151 阅读 · 0 评论 -
【算法百题之三十五】整数翻转
【算法百题之三十五】整数翻转 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的问题是:整数翻转 思路:翻转输出没什么难度,主要是判断边界不要超出整形的最大或者最小值情况*/#include <iostream>using namespace std;int reverse(int x) { int index = x; long result = 0; whil...原创 2020-11-27 18:12:58 · 204 阅读 · 0 评论 -
【算法百题之三十四】Z字形变换
【算法百题之三十四】Z字形变换 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的问题是:Z字形变换 思路:找规律我们可以通过2 * numRows - 2来找到同一行下一个元素(一列都是满的情况),对于除第一行和最后一行的元素还会存在打斜的元素(一列只有一个元素那种情况),我们可以通过index + rowNum - 2 * row来找到string convert(string s, ...原创 2020-11-27 15:37:04 · 172 阅读 · 0 评论 -
【算法百题之三十三】最长回文子串
【算法百题之三十三】最长回文子串 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的问题是:回文串 思路:中心拓展法 中心扩散法怎么去找回文串? 从每一个位置出发,向两边扩散即可。遇到不是回文的时候结束。举个例子,str = acdbbdaastr=acdbbdaa 我们需要寻找从第一个 b(位置为 33)出发最长回文串为多少。怎么寻找? 首先往左寻找与当期位置相同的字符,直到遇到不相...原创 2020-11-24 21:54:16 · 224 阅读 · 0 评论 -
【算法百题之三十二】5分钟看懂红黑树
【算法百题之三十二】红黑树插入删除 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的探讨的问题是:实现红黑树的插入删除功能。 (一)什么是红黑树? 一语而言之,红黑树就是一颗弱平衡的二叉搜索树。二叉搜索树(BST)我知道,二叉平衡树我也知道(AVL),弱平衡的二叉搜索树是什么鬼?? 二叉搜索树的性质简单,每个结点有唯一的值,且每一个父节点的值比左子结点的值小,比右...原创 2020-11-24 18:32:47 · 659 阅读 · 0 评论 -
【算法百题之三十一】寻找两个正序数组的中位数
【算法百题之三十一】寻找两个正序数组的中位数 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的问题是: 思路:1.原本是正序,2.要求时间复杂度是log(n + m).。通过这两点我们就可以确定我们需要使用二分查找法来实现了。题目要求求中位数,我们看中位数的定义:设有N个连续偶数,由中位数定义:当N为奇数时,处于中间位置的变量值即为中位数;当N为偶数时,中位数则为处于中间位置...原创 2020-11-23 17:35:38 · 173 阅读 · 0 评论 -
【算法百题之二十四】20网易面试题-幸运N串
【算法百题之二十四】幸运N串 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的问题是:小A很喜欢字母N,他认为连续的N串是他的幸运串。有一天小A看到了一个全部由大写字母组成的字符串,他被允许改变最多2个大写字母(也允许不改变或者只改变1个大写字母),使得字符串中所包含的最长的连续的N...原创 2020-02-09 12:49:20 · 1170 阅读 · 0 评论 -
【算法百题之二十七】19网易面试题-字符迷阵
【算法百题之二十七】字符迷阵 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的问题是:字符迷阵是一种经典的智力游戏。玩家需要在给定的矩形的字符迷阵中寻找特定的单词。在这题的规则中,单词是如下规定的:1. 在字符迷阵中选取一个字符作为单词的开头;2. 选取右方、下方、或右下45...原创 2020-02-09 13:20:08 · 301 阅读 · 0 评论 -
【算法百题之三十】无重复字符的最长子串
【算法百题之三十】无重复字符的最长子串 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的问题是: 思路:这道题考察的主要是对string类的使用,对链表进行便利的过程中记录目前为止最长的字串以及当前记录的字串,若遇到重复的字符,则对当前字串和最长字串进行更新。在解题的过程中,我们主要使用到一下几个string的函数:string.length() // 返回当前字符串的长度...原创 2020-11-20 11:43:16 · 133 阅读 · 0 评论 -
【算法百题之二十九】两数相加
【算法百题之二十九】两数之和 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的问题是:給出的结构体:struct ListNode { int val; ListNode *next; ListNode() : val(0), next(nullptr) {} ListNode(int x) : val(x), next(nullptr) {} ListNode(int x,...原创 2020-11-19 11:44:58 · 174 阅读 · 0 评论 -
【算法百题之二十八】两数之和
【算法百题之二十八】两数之和 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的问题是: 思路:一开始的时候,我就直接想到暴力两个循环解决这个问题,这样子做的时间复杂度是o(nlogn)for(int i = 0; i < nums.size(); i++){ for(int j = i + 1; j < nums.size(); j++){ ...原创 2020-11-18 12:08:18 · 204 阅读 · 0 评论 -
【算法百题之二十六】19网易面试题-会话列表
【算法百题之二十六】会话列表 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的问题是:小云正在参与开发一个即时聊天工具,他负责其中的会话列表部分。会话列表为显示为一个从上到下的多行控件,其中每一行表示一个会话,每一个会话都可以以一个唯一正整数id表示。当用户在一个会话中发送或接...原创 2020-02-09 13:13:18 · 318 阅读 · 0 评论 -
【算法百题之二十五】19网易面试题-时钟
【算法百题之二十五】时钟 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的问题是: 小W有一个电子时钟用于显示时间,显示的格式为HH:MM:SS,HH,MM,SS分别表示时,分,秒。其中时的范围为[‘00’,‘01’…‘23’],分的范围为[‘00’,‘01’…‘59’],秒的范围为...原创 2020-02-09 13:00:34 · 528 阅读 · 0 评论 -
【算法百题之二十三】20网易面试题-游泳池-研发
【算法百题之二十三】游泳池—研发 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的问题是: 在开始时,给水管和排水管都是打开状态的,并且游泳池里没有水。在自动装置的作用下,每经过t1分钟,给水管的状态都会改变,即从打开状态变为关闭状态或从关闭状态变为打开状态,而同时每经过t2分钟,...原创 2020-02-09 02:44:15 · 619 阅读 · 0 评论 -
【算法百题之二十二】20网易面试题-水平线研发
【算法百题之二十二】水平线研发 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的问题是: 由于远古的宇宙战争的原因,伞屉文明是一个二维世界里的文明,所以你可以这样理解发电基站的位置与他们的链接关系:给你一个一维数组a,长度为n,表示了n个基站的位置高度信息。数组的第i个元素a[i]表...原创 2020-02-09 02:22:51 · 850 阅读 · 7 评论 -
【算法百题之二十一】20网易面试题-二进制计数
【算法百题之二十一】二进制计数 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! 今天的问题是: 小A刚学了二进制,他十分激动。为了确定他的确掌握了二进制,你给他出了这样一道题目:给定N个非负整数,将这N个数字按照二进制下1的个数分类,二进制下1的个数相同的数字属于同一类。求最后一共有几类数...原创 2020-02-09 02:05:07 · 911 阅读 · 0 评论