
leetcode
期待┌;崛起、~~
这个作者很懒,什么都没留下…
展开
-
面试笔试算法-搜索综合问题
Oj81:小明回家题目描述小明看完了电影,是时候回家了,可是这时他突然得知小米之家的小米9现货开卖了,这款手机小明已经想了一个多月,知道这个消息后的他十分兴奋,一定要在回家之前先去小米之家买手机(城市中有一个或多个小米之家),请计算小明从电影院到任意一个小米之家买手机后回家的最短距离(只能朝上下左右四个方向行走,除了障碍物外,其他地方都可以通过),数据保证可以买完手机后回家。输入第 1 行两个数 n 和 m 表示地图有 n 行 m 列 2≤n,m≤2000 第 2 行至第 n+1 行为地图 其中原创 2020-12-05 14:16:45 · 675 阅读 · 2 评论 -
面试笔试算法之排列组合与搜索走地图问题
排列组合与搜索走地图问题Oj-235.递归实现指数型枚举题目描述从 1−n 这 n 个整数中随机选取任意多个,每种方案里的数从小到大排列,按字典序输出所有可能的选择方案。输入输入一个整数 n。(1≤n≤10)输出每行一组方案,每组方案中两个数之间用空格分隔。注意每行最后一个数后没有空格。样例输入3样例输出11 21 2 31 322 33样例输入24样例输出211 21 2 31 2 3 41 2 41 31 3 41 422 32原创 2020-12-04 19:14:33 · 1213 阅读 · 0 评论 -
面试笔试算法-STL容器的使用与练习
容器的使用:queue:类型 + 名, queue<int> que;que.push(1); 入队que.pop(); 出队que.front(); 队首元素que.size(); 元素个数que.empty(); 是否为空stack:类型 + 名, stack<int> sta;sta.push(1);sta.pop();sta.top(); 获得栈顶元素sta.size();sta.empty();注:底层实现是双端队列(de原创 2020-12-04 07:59:58 · 325 阅读 · 0 评论 -
面试笔试算法-LeetCode刷题
知识点-前缀和快速求解区间和原数组:12345671327945开辟前缀和空间:01234567014613222631求x–y区间和:sum = sum[y] - sum[x - 1];LeetCode-13.罗马数字转整数13. 罗马数字转整数罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V原创 2020-12-04 06:41:38 · 317 阅读 · 0 评论 -
面试笔试算法3-Oj刷题
面试笔试算法刷题原创 2020-12-03 09:01:19 · 1255 阅读 · 0 评论 -
面试笔试算法-二分专题
二分查找:朴素二分:精确找数①朴素二分找一个精确对应的值两种情况整数浮点数while条件L <= RR - L > 0.00001 精确到小数点后4位更新参数更新公式更新公式mid(L + R) / 2 为了避免溢出???? ((long long) L + R) / 2 ,L + (R - L) / 2(L + R) / 2Lmid + 1midRmid - 1mid浮点数情况放在②、③也成立②⭐特殊二原创 2020-12-03 07:14:23 · 404 阅读 · 0 评论 -
面试笔试算法-2
oj-481.冰壶比赛题目描述:在冰壶比赛中,给出一个目标点 P 以及一个规定的正整数 r,每一局由甲和乙两队轮流投冰壶各 8 次后,该局比赛结束。此时,那一方的冰壶最终离目标点最近,该方得分,另一方不得分。得分方每顶离目标点 P 距离小于或等于 r,位置较另一队所有冰壶都更接近目标点 P 的冰壶都可以得 1 分。比赛最多进行 10 局。双方之间的某局比赛结束后,落后一方可以弃权,此时比赛 不再进行下去。已知某一局结束时,双方的每个冰壶离目标点 P 的距离以及正整数 r,请写一个程序判断两队之间每一原创 2020-12-01 12:55:58 · 659 阅读 · 0 评论 -
leetcode 160:相交链表
题目:相交链表题目描述: 编写一个程序,找到两个单链表相交的起始节点。例如,下面的两个链表: A: a1 → a2 ↘ c1 → c2 → c3 ↗ B: b1 → b2 → b3在节点 c1 开始相交。...原创 2018-04-29 22:07:17 · 187 阅读 · 0 评论 -
leetcode 160:相交链表
题目:相交链表题目描述: 编写一个程序,找到两个单链表相交的起始节点。例如,下面的两个链表: A: a1 → a2 ↘ c1 → c2 → c3 ↗ B: b1 → b2 → b3在节点 c1 开始相交。...原创 2018-04-29 22:07:44 · 130 阅读 · 0 评论 -
leetcode 225:用队列实现栈
题目:用队列实现栈题目描述: 使用队列实现栈的下列操作: push(x) –元素 x 入栈 pop() – 移除栈顶元素 top() – 获取栈顶元素 empty() –返回栈是否为空注意:你只能使用队列的基本操作– 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。你所使用的语言也许不支...原创 2018-05-07 21:06:39 · 502 阅读 · 0 评论 -
leetcode 232:用栈实现队列
题目:用栈实现队列题目描述: 使用栈实现队列的下列操作:push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。peek() – 返回队列首部的元素。empty() – 返回队列是否为空。注意:你只能使用标准的栈操作– 也就是只有push to top, peek/pop from top, size, 和 is empty 操作是合法的。你...原创 2018-05-07 21:16:07 · 327 阅读 · 0 评论 -
leetcode 155:最小栈
题目:最小栈题目描述设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素x推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。示例: MinStack minStack = new MinStack(); minStack.push(-2...原创 2018-05-07 21:23:00 · 484 阅读 · 0 评论 -
leetcode 224:基本计算器
题目:基本计算器题目描述实现一个基本的计算器来计算一个简单的字符串表达式的值。字符串表达式可以包含左括号 ( ,右括号 ),加号 + ,减号 -,非负整数和空格 。示例1: 输入: “1 + 1” 输出: 2示例2: 输入: ” 2-1 + 2 ” 输出: 3示例3: 输入: “(1+(4+5+2)-3)+(6+8)” 输...原创 2018-05-07 21:29:51 · 1177 阅读 · 0 评论 -
leetcode 295:数据流的中位数
题目:数据流的中位数题目描述: 中位数是排序后列表的中间值。如果列表的大小是偶数,则没有中间值,此时中位数是中间两个数的平均值。示例:[2,3,4] , 中位数是 3[2,3], 中位数是 (2 + 3) / 2 = 2.5设计一个支持以下两种操作的数据结构:void addNum(int num) - 从数据流中增加一个整数到数据结构中。double findM...原创 2018-05-07 21:36:38 · 670 阅读 · 0 评论 -
leetcode 92:反转链表Ⅱ
题目:反转链表Ⅱ题目描述: 反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明: 1 ≤ m ≤ n ≤ 链表长度。示例: 输入: 1->2->3->4->5->NULL, m = 2, n = 4 输出: 1->4->3->2->5->NULL/** * Definition fo...原创 2018-04-29 21:28:59 · 589 阅读 · 0 评论 -
leetcode 206:反转链表
题目:反转链表题目描述: 反转一个单链表。进阶: 链表可以迭代或递归地反转。你能否两个都实现一遍?/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next...原创 2018-04-29 21:21:04 · 204 阅读 · 0 评论 -
leetcode 7:反转整数
题目:反转整数 - 题目面述: 给定一个32位有符号整数,将整数中的数字进行反转。 实例1: 输入:123 输出:321实例2: 输入:-123 输出:-321注意: 假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。 解法一:[C++:]static...原创 2018-04-29 15:25:15 · 490 阅读 · 0 评论 -
leetcode 142:环形链表Ⅱ
题目:环形链表Ⅱ题目描述: 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 说明:不允许修改给定的链表。 进阶: 你是否可以不用额外空间解决此题?解法一:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode ...原创 2018-04-30 19:14:11 · 964 阅读 · 0 评论 -
leetcode 86:分隔链表
题目:分隔链表 题目描述: 给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。 你应当保留两个分区中每个节点的初始相对位置。示例 输入: head = 1->4->3->2->5->2, x = 3 输出: 1->2->2->4->3->5 /**...原创 2018-04-30 19:22:52 · 898 阅读 · 0 评论 -
leetcode 138:复制带随机指针的链表
题目:复制带随机指针的链表题目描述: 给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。 要求返回这个链表的深度拷贝。/** * Definition for singly-linked list with a random pointer. * struct RandomListNode { * int label; *...原创 2018-04-30 19:26:58 · 889 阅读 · 0 评论 -
leetcode 21:合并两个有序链表
题目:合并两个有序链表题目描述: 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4/** * Definition for singly-linked list. * struc...原创 2018-04-30 19:30:56 · 4872 阅读 · 3 评论 -
leetcode 23:合并k个有序链表
题目:合并k个有序链表题目描述: 合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1->1->2->3->4->4->5->6分治思想:/** * Defini...原创 2018-04-30 19:37:59 · 271 阅读 · 0 评论 -
leetcode:26 删除排序数组中的重复项
题目:删除排序数组中的重复项给定一个排序数组,你需要在原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑...原创 2018-04-21 11:58:45 · 446 阅读 · 0 评论 -
leetcode 1:两数之和
题目:两数之和给定一个整数数组和一个目标值,找出数组中和为目标值的两个 数。 你可以假设每个输入只对应一种答案,且同样的元素不能重复利用。示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] C++:class Solution {pub...原创 2018-04-21 12:16:32 · 659 阅读 · 0 评论 -
leetcode 66:加一
题目:加一题目描述:给定一个非负整数组成的非空数组,在该数的基础上加一,返回一个新的数组。 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。示例1: 输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123。示例2: 输入: [4,3,2,1] 输出: [...原创 2018-04-21 12:36:14 · 214 阅读 · 0 评论 -
leetcode 283:移动零
题目:移动零题目描述:给定一个数组 nums, 编写一个函数将所有 0 移动到它的末尾,同时保持非零元素的相对顺序。 例如, 定义 nums = [0, 1, 0, 3, 12],调用函数之后, nums 应为 [1, 3, 12, 0, 0]。注意事项 必须在原数组上操作,不要为一个新数组分配额外空间。 尽量减少操作总数。解法一:C++:class Solution...原创 2018-04-21 12:57:12 · 154 阅读 · 0 评论 -
leetcode 122:买卖股票的最佳时机Ⅱ
题目:买卖股票的最佳时机Ⅱ 题目描述: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 示例1: 输入: [7,1,5,3,6,4] 输出: 7 解释: 在第 2 天(股票价格 ...原创 2018-04-21 13:19:38 · 243 阅读 · 0 评论 -
leetcode 136: 只出现一次的数字
题目:只出现一次的数字题目描述: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例1 输入: [2,2,1] 输出: 1示例2: 输入: [4,1,2,1,2] 输出: 4C++:class Solution{...原创 2018-04-21 13:39:14 · 362 阅读 · 0 评论 -
leetcode 189:旋转数组
题目:旋转数组题目描述: 将包含 n 个元素的数组向右旋转 k 步。 例如,如果 n = 7 , k = 3,给定数组 [1,2,3,4,5,6,7] ,向右旋转后的结果为 [5,6,7,1,2,3,4]。 提示: 要求空间复杂度为 O(1)C++:class Solution {public: void rotate(vector<int>&a...原创 2018-04-21 13:50:17 · 155 阅读 · 0 评论 -
leetcode 217:存在重复
题目:存在重复题目描述: 给定一个整数数组,判断是否存在重复元素。 如果任何值在数组中出现至少两次,函数应该返回 true。如果每个元素都不相同,则返回 false。C++:class Solution{public: bool containsDuplicate(vector<int>& nums){ unordered_map&...原创 2018-04-21 17:27:16 · 612 阅读 · 0 评论 -
leetcode 350:两个数组的交集Ⅱ
题目:两个数组的交集Ⅱ题目描述: 给定两个数组,写一个方法来计算它们的交集。 例如: 给定 nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2]. 注意:输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。我们可以不考虑输出结果的顺序。跟进: 如果给定的数组已经排好序呢?你将如何优化你的算法? 如果 nums1 ...原创 2018-04-21 17:41:54 · 400 阅读 · 0 评论 -
leetcode 141:环形链表
题目:环形链表题目面述: 给定一个链表,判断链表中是否有环。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */cl...原创 2018-04-30 19:07:37 · 580 阅读 · 0 评论