每日一题
nikelee233
这个作者很懒,什么都没留下…
展开
-
每日一题(21)
题目:最接近的三数之和题目描述给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在恰好一个解。解题思路使用双指针来求解,那么首先将数组按照大小排序,固定一个数值,第二个和第三个从首尾依次移动,根据三数之和与target的大小来选择指针移动的方向。代码class Solution {public: int threeSumClosest(vector<i原创 2021-11-17 21:44:52 · 164 阅读 · 0 评论 -
每日一题(20)
题目:范围求和Ⅱ题目描述给定一个初始元素全部为 0,大小为 m*n 的矩阵 M 以及在 M 上的一系列更新操作。操作用二维数组表示,其中的每个操作用一个含有两个正整数 a 和 b 的数组表示,含义是将所有符合 0 <= i < a 以及 0 <= j < b 的元素 M[i][j] 的值都增加 1。在执行给定的一系列操作后,你需要返回矩阵中含有最大整数的元素个数。解题思路可以计算二维操作数组的重复区域,该重复区域则是累加次数最多的。此外i和j的值均是小于ab的,那么不会出原创 2021-11-07 21:56:03 · 132 阅读 · 0 评论 -
每日一题(19)
题目:键盘行题目描述给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。美式键盘 中:第一行由字符 “qwertyuiop” 组成。第二行由字符 “asdfghjkl” 组成。第三行由字符 “zxcvbnm” 组成。解题思路将每一行字符保存起来,然后把单词中的每个字符与其进行比较。首先考虑遍历顺序的问题,可以按照a~z的顺序去判断单词中每个字符所在的行数,当某个字符与单词的第一个字符不是在同一行时,停止遍历。代码class Solu原创 2021-10-31 21:33:02 · 139 阅读 · 0 评论 -
每日一题(18)
题目:下一个更大元素题目描述给你两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。请你找出 nums1 中每个元素在 nums2 中的下一个比其大的值。nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出 -1 。解题思路将nums2中的元素倒着放到栈中,保证栈中的元素排序是从栈顶按照从大向小排,这样就可以保证找到每一个元素右边第一个比他大的代码class Solu原创 2021-10-26 22:23:56 · 105 阅读 · 0 评论 -
每日一题(17)
题目:搜索二维矩阵题目描述编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。解题思路从右上角往下搜索,这样的话,如果这个值比target大则这一列都比target大,如果这个值比target小,则这一行都比target小代码class Solution {public: bool searchMatrix(vector<vector<int>>原创 2021-10-25 21:57:03 · 132 阅读 · 0 评论 -
每日一题(16)
题目:最小操作次数使数组元素相等题目描述给你一个长度为 n 的整数数组,每次操作将会使 n - 1 个元素增加 1 。返回让数组所有元素相等的最小操作次数解题思路首先这是一个智商题,n-1个数加1,最终所有的数相等,等于一个数减1,最终所有的数相等相等值肯定是最小值,那么其他数减去最小数的和即为操作次数代码class Solution {public: int minMoves(vector<int>& nums) { int minNum = *原创 2021-10-20 21:58:06 · 193 阅读 · 0 评论 -
每日一题(15)
题目:数字的补数题目描述对整数的二进制表示取反(0 变 1 ,1 变 0)后,再转换为十进制表示,可以得到这个整数的补数。例如,整数 5 的二进制表示是 “101” ,取反后得到 “010” ,再转回十进制表示得到补数 2 。给你一个整数 num ,输出它的补数。解题思路计算二进制,然后取反,在计算十进制代码class Solution {public: int findComplement(int num) { string bin=""; whi原创 2021-10-18 22:31:48 · 150 阅读 · 0 评论 -
每日一题(14)
题目:二叉搜索树中第K小的元素题目描述给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。解题思路二叉搜索树的每一个节点的左子树节点比其小,右子树的节点比其大,可以通过中序遍历的方法来选择第k小的数代码class Solution {public: int kthSmallest(TreeNode* root, int k) { stack<TreeNode*> sta; while (r原创 2021-10-17 17:24:00 · 60 阅读 · 0 评论 -
每日一题(13)
题目:外观数列题目描述题目较长,还是去力扣看吧解题思路根据题目描述的数列关系,使用string一个一个的计算代码class Solution {public: string countAndSay(int n) { string num="1"; if(n==1) return num; for(int i=2;i<=n;++i) { string r原创 2021-10-15 22:37:09 · 66 阅读 · 0 评论 -
每日一题(12)
题目:山峰数组的顶部题目描述符合下列属性的数组 arr 称为 山峰数组(山脉数组) :arr.length >= 3存在 i(0 < i < arr.length - 1)使得:arr[0] < arr[1] < … arr[i-1] < arr[i]arr[i] > arr[i+1] > … > arr[arr.length - 1]给定由整数组成的山峰数组 arr ,返回任何满足 arr[0] < arr[1] < … ar原创 2021-10-14 22:07:27 · 87 阅读 · 0 评论 -
每日一题(12)
题目:Fizz Buzz题目描述给你一个整数 n ,找出从 1 到 n 各个整数的 Fizz Buzz 表示,并用字符串数组 answer(下标从 1 开始)返回结果,其中:answer[i] == “FizzBuzz” 如果 i 同时是 3 和 5 的倍数。answer[i] == “Fizz” 如果 i 是 3 的倍数。answer[i] == “Buzz” 如果 i 是 5 的倍数。answer[i] == i 如果上述条件全不满足。解题思路能被15整除的数肯定是3和5的倍数Fizz原创 2021-10-13 22:30:13 · 99 阅读 · 0 评论 -
每日一题(11)
题目:两数相除题目描述给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2解题思路不能使用乘除取余,那么在计算除法的时候可以使用移位,通过移位来找到最接近被除数的值,除数所增大的倍数就是商需要注意-2147483647原创 2021-10-12 23:22:53 · 85 阅读 · 0 评论 -
每日一题(10)
题目:整数转换英文表示题目描述将非负整数 num 转换为其对应的英文表示。解题思路从个位开始向前,再建一个map对应0~9的英文,还要十位、百位等的map代码class Solution {public: vector<string> singles = {"", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"}; vector<string> teens原创 2021-10-11 22:05:41 · 74 阅读 · 0 评论 -
每日一题(9)
题目:排列硬币题目描述你总共有 n 枚硬币,并计划将它们按阶梯状排列。对于一个由 k 行组成的阶梯,其第 i 行必须正好有 i 枚硬币。阶梯的最后一行 可能 是不完整的。给你一个数字 n ,计算并返回可形成 完整阶梯行 的总行数。解题思路可以通过累加求和的方法,当和大于给定的硬币数量时停止根据求和公式列一元二次方程,对方程进行求解二分法,总行数只可能在1~n之间,通过求和公式来比较大小,得到最终的结果代码class Solution {public: int arrangeC原创 2021-10-10 22:04:35 · 155 阅读 · 0 评论 -
每日一题(8)
题目:将数据流变为多个不相交区间题目描述给你一个由非负整数 a1, a2, …, an 组成的数据流输入,请你将到目前为止看到的数字总结为不相交的区间列表。实现 SummaryRanges 类:SummaryRanges() 使用一个空数据流初始化对象。void addNum(int val) 向数据流中加入整数 val 。int[][] getIntervals() 以不相交区间 [starti, endi] 的列表形式返回对数据流中整数的总结。解题思路首先定义一个区间的数据结构,题解中使原创 2021-10-09 22:41:15 · 54 阅读 · 0 评论 -
每日一题(7)
题目:重复的DNA序列题目描述所有 DNA 都由一系列缩写为 ‘A’,‘C’,‘G’ 和 ‘T’ 的核苷酸组成,例如:“ACGAATTCCG”。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。编写一个函数来找出所有目标子串,目标子串的长度为 10,且在 DNA 字符串 s 中出现次数超过一次。解题思路从第一个开始十个字符可能存在重复,从第二个开始十个字符也可能存在重复,以此类推,每十个都有可能,直到倒数第十个整一个map,十个单词为一组放到set里边;上面的方法内存空间占原创 2021-10-08 21:19:26 · 83 阅读 · 0 评论 -
每日一题(6)
题目:字符串中的单词数题目描述统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。请注意,你可以假定字符串里不包括任何不可打印的字符。解题思路以空格来区分单词连续空格的情况代码class Solution {public: int countSegments(string s) { if(s.empty()) return 0; int res=0; for(int i=0;i<s.size原创 2021-10-08 20:19:14 · 55 阅读 · 0 评论 -
每日一题(5)
题目:第三大的数题目描述给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。解题思路数组的大小能否超过3有多个相同的数,而不相同的数能否超过3个遍历一遍数组,通过不同的方式来记录这些信息使用set存放数据,set会自动排序并保证数值的唯一性代码class Solution {public: int thirdMax(vector<int>& nums) { long max1=LONG_MIN, max2=LON原创 2021-10-06 21:20:14 · 66 阅读 · 0 评论 -
每日一题(4)
题目:顶端迭代器题目描述请你设计一个迭代器,除了支持 hasNext 和 next 操作外,还支持 peek 操作。实现 PeekingIterator 类:PeekingIterator(int[] nums) 使用指定整数数组 nums 初始化迭代器。int next() 返回数组中的下一个元素,并将指针移动到下个元素处。bool hasNext() 如果数组中存在下一个元素,返回 true ;否则,返回 false 。int peek() 返回数组中的下一个元素,但 不 移动指针。解题原创 2021-10-05 20:38:22 · 68 阅读 · 0 评论 -
每日一题(3)
题目 密钥格式化题目描述有一个密钥字符串 S ,只包含字母,数字以及 ‘-’(破折号)。其中, N 个 ‘-’ 将字符串分成了 N+1 组。给你一个数字 K,请你重新格式化字符串,使每个分组恰好包含 K 个字符。特别地,第一个分组包含的字符个数必须小于等于 K,但至少要包含 1 个字符。两个分组之间需要用 ‘-’(破折号)隔开,并且将所有的小写字母转换为大写字母。给定非空字符串 S 和数字 K,按照上面描述的规则进行格式化。解题思路本题是要将字符串重新分组,第一组的字符数量要特殊处理,来保证后边原创 2021-10-04 23:21:11 · 131 阅读 · 0 评论 -
每日一题(2)
题目 分数到小数给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以 字符串形式返回小数 。如果小数部分为循环小数,则将循环的部分括在括号内。如果存在多个答案,只需返回 任意一个 。对于所有给定的输入,保证 答案字符串的长度小于 104 。解题思路是否会有溢出先计算整数部分,再计算小数部分对于循环小数,确定循环位置分子分母异号代码class Solution {public: string fractionToDecimal(int n原创 2021-10-03 23:35:15 · 74 阅读 · 0 评论 -
每日一题(1)
题目:数字转换为十六进制数给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。注意:十六进制中所有字母(a-f)都必须是小写。十六进制字符串中不能包含多余的前导零。如果要转化的数为0,那么以单个字符’0’来表示;对于其他情况,十六进制字符串中的第一个字符将不会是0字符。给定的数确保在32位有符号整数范围内。不能使用任何由库提供的将数字直接转换或格式化为十六进制的方法。解题思路最笨的办法就是根据十进制与十六进制的转换方式,逐位计算,这种方法对于正数比较原创 2021-10-02 18:30:19 · 84 阅读 · 0 评论