编程
QMay
这个作者很懒,什么都没留下…
展开
-
位运算系列(&, |, ^)
1、136. 只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1思路: 异或操作^的性质: a^a = 0, 0^a = a, 对所有元素进行异或的结果就是只出现一次的元素,其它元素两两抵消。class Solution {public: int singleNumber(vector&原创 2020-10-15 20:54:19 · 314 阅读 · 0 评论 -
数组原地排序系列-leetcode消失的两个数字,数组中重复的数据,缺失的第一个正数
数组原地排序适用场景:数组nums中元素范围固定,为1~n思路:将每个元素换到对应位置上,即nums[i]=i,实际上下标从0开始,数值从1开始,所以应该处理为nums[i]=i+1。当然,如果数组元素范围也是0~n-1,那就直接令nums[i]=i成立即可。具体地要依据题目决定。1、面试题 17.19. 消失的两个数字给定一个数组,包含从 1 到 N 所有的整数,但其中缺了两个数字。你能在 O(N) 时间内只用 O(1) 的空间找到它们吗?以任意顺序返回这两个数字均可。示例 1:原创 2020-10-15 17:53:35 · 371 阅读 · 0 评论 -
leetcode快速幂
1、实现pow(x, n),即计算 x 的 n 次幂函数。代码class Solution {public: double myPow(double x, int n) { long long m = n; double ans = 1.0; int sign = 1; if (n<0) sign = -1; m = abs(m); while (m)..原创 2020-10-15 11:39:30 · 191 阅读 · 0 评论 -
Leetcode最小移动次数使数组元素相等
给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数。每次移动将会使 n - 1 个元素增加 1。示例:输入:[1,2,3]输出:3解释:只需要3次移动(注意每次移动会增加两个元素的值):[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]刚看完题目毫无头绪,哎我去,这竟然是easy程度的题,瞬间怀疑人生。看了官方题解,觉得数学法真是太奇妙了,必须mark一波。class Solution {...原创 2020-09-16 14:37:08 · 117 阅读 · 0 评论 -
编程题-链表与双指针
总结:链表相关的题目大部分可以用双指针解决。i.e.,找链表倒数第k个节点,找链表中间1/2节点。快慢指针1、找链表中倒数第k个节点[1]输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。/*双指针1)p1比p2先行k-1步,当p1到达最后一个节点,p2指向倒数第k个节点2)p1比p2先行k步,当p1到达.原创 2020-08-12 15:05:19 · 176 阅读 · 0 评论 -
逻辑短路和快速乘-剑指 Offer 64. 求1+2+…+n
求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。注:1 <= n<= 10000思路:如果不考虑条件限制,这道题很简单。可以用递归或者直接公式计算sum=n*(n+1)/2。1、递归: int sumNums(int n) { int sum = 0; if (n>0) sum = n + sumNums(n-1); .原创 2020-06-21 17:27:04 · 127 阅读 · 0 评论 -
力扣面试题60. n个骰子的点数
把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。示例 1:输入: 1输出: [0.16667,0.16667,0.16667,0.16667,0.16667,0.16667]示例 2:输入: 2输出...原创 2020-04-21 11:11:42 · 148 阅读 · 0 评论 -
分石子-牛客网
题目描述牛牛有n堆石子堆,第i堆一共有ai个石子。牛牛可以对任意一堆石子数量大于1的石子堆进行分裂操作,分裂成两堆新的石子数量都大于等于1的石子堆。现在牛牛需要通过分裂得到m堆石子,他想知道这m堆石子的最小值最大可以是多少?示例1 输入3,5,[3,5,6]输出2说明把5分裂成2和3把6分裂成2和4得到五堆石子[3,2,3,2,4]备注:1≤n...原创 2020-04-20 10:54:14 · 710 阅读 · 0 评论 -
leetcode面试题. 最小差
给定两个整数数组a和b,计算具有最小差绝对值的一对数值(每个数组中取一个值),并返回该对数值的差示例:输入:{1, 3, 15, 11, 2}, {23, 127, 235, 19, 8}输出: 3,即数值对(11, 8)提示:1 <= a.length, b.length <= 100000-2147483648 <= a[i], b[i] <...原创 2020-04-21 11:17:46 · 640 阅读 · 0 评论 -
2019拼多多笔试题-leetcode754.最终到达的数字
在一根无限长的数轴上,你站在0的位置。终点在target的位置。每次你可以选择向左或向右移动。第 n 次移动(从 1 开始),可以走 n 步。返回到达终点需要的最小移动次数。示例 1:输入: target = 3输出: 2解释:第一次移动,从 0 到 1 。第二次移动,从 1 到 3 。示例 2:输入: target = 2输出: 3解释...原创 2020-04-08 22:53:45 · 567 阅读 · 0 评论 -
leetcode刷题845.数组中的最长山脉
我们把数组 A 中符合下列属性的任意连续子数组 B 称为 “山脉”:B.length >= 3存在 0 < i < B.length - 1 使得 B[0] < B[1] < ... B[i-1] < B[i] > B[i+1] > ... > B[B.length - 1](注意:B 可以是 A 的任意子数组,包括整个数组 A。)...原创 2020-04-08 21:12:08 · 118 阅读 · 0 评论 -
leetcode刷题-圆圈中最后剩下的数字(约瑟夫环问题)
0,1,,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。示例 1:输入: n = 5, m = 3输出: 3示例 2:输入: n = 10, m = 17输出: 2...原创 2020-04-08 11:15:05 · 189 阅读 · 0 评论 -
leetcode字节跳动算法题-接雨水
思路:对于每个柱子i,雨水所能够达到的最大高度为 i左边最大值和右边最大值二者之中的最小值。只要理解了了这个思路,代码就很容易实现了。在具体实现时,为了避免对每个柱子每次分别向左向右找最大值的过程,首先对数字进行两次遍历,记录最小值和最大值,之后对数组遍历一次计算雨水总量即可。时间复杂度O(n)代码:class Solution {public: int trap(vect...原创 2020-04-05 19:41:51 · 765 阅读 · 0 评论