算法杂题
RainyD4y
NULL
展开
-
LeetCode 56 合并区间 题解
题目大意给定一组区间,然后将有重叠部分的区间合并,注意如果两个区间仅有一个数重叠也算,比如[1,4]与[4,5]。分析直接按照区间的左端点大小升序排序,如果相同则比较右端点,均按升序。排序后,如果后一个区间的左端点小于等于前一个区间的右端点,那么我们就认为这两个区间可以合并,否则将前一个区间认为没有可以合并的区间了,扔到结果里边去,因为后一个如果都不能合并的话,考虑到升序的原因,后面的...原创 2019-11-16 21:28:14 · 298 阅读 · 0 评论 -
LeetCode 8 字符串转换整数 (atoi) 题解
题目大意给定一个字符串,将其题目要求转换为整数,具体要求可见原题链接(https://leetcode-cn.com/problems/string-to-integer-atoi/)。分析这道题恶心的地方在于对各种情况进行排除,我的做法是:1.首先移除所有的前置空格,移除完成后判断是否是空串,如果是返回0;2.接着判断第一个字符是否为正负号,如果是则第二个要求是数字才可以,如...原创 2019-11-10 18:40:16 · 152 阅读 · 0 评论 -
LeetCode 36 有效的数独 题解
题目大意给定一个初始的数独状态,判断是否满足要求:数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。分析一次二重循环遍历一下这个数独,根据要求判定即可。代码bool isValidSudoku(vector<vector<char>>& board) { ...原创 2019-11-05 21:06:42 · 237 阅读 · 0 评论 -
LeetCode 35 搜索插入位置 题解
题目大意在一个有序数组中查找给定的一个数,给出它出现的最左与最右的位置,要求时间复杂度是O(logn)分析根据时间复杂度,很明显能看出来要用基于二分的方法,将二分查找稍微修改一下就好,传统的二分查找当我们在中间位置找到了target的时候会直接返回,如果要查找最左出现的位置,可以判定一下nums[mid - 1],如果等于target的话,就将right改为mid - 1,继续迭代,同理可以...原创 2019-11-05 20:29:41 · 164 阅读 · 0 评论 -
LeetCode 15 三数之和 题解
题目大意:在一个数组中求出所有a,b,c,使得a+b+c=0,注意元素不能重复,且(a,b,c)不能重复。分析:(一)最直接的想法是直接枚举a,b,c,这样的做法是O(n^3),很明显会超时。(二)接下来有两个想法,我最初想到的是首先排序,然后枚举a和b,然后在剩余元素中二分查找判断是否存在-(a+b),这样的时间复杂度是O(n^2logn),另一个想法是利用哈希表来判断是否存在-...原创 2019-11-05 20:15:49 · 220 阅读 · 0 评论