bloodfire
bloodfire
全部文章
读书笔记
刷题(146)
知识点(10)
题解(49)
归档
标签
去牛客网
登录
/
注册
bloodfire的博客
全部文章
/ 读书笔记
(共25篇)
4/30剑指offer
1.不用加减乘除做加法写一个函数求两个整数之和,要求函数体内不得使用四则运算符号。思路:利用位运算。第一步不考虑进位对每一位相加,可以利用异或符号;第二位考虑进位,只有1+1的时候才会产生一个进位,此时可以想象两个数先做位与运算,然后再向左移动一位。第三步把前面两个步骤的结果相加(相加即仍然重复上述...
2020-04-30
0
0
4/29剑指offer
1.圆圈中最后剩下的数字0,1,...,n-1这n个数字排成一个圆圈,从0开始,每次删除圆圈里第m个数字。求出这个圆圈里剩下的最后一个数字。思路一:用环形链表模拟圆圈:创建一个一共有n个节点的环形链表,然后每次在这个链表中删除的第m个节点。 class Solution { public: ...
2020-04-29
0
0
4/28剑指offer
1.队列的最大值滑动窗口的最大值:给定一个数组和滑动窗口的大小,找出所有滑动窗口的最大值。思路:建立一个两段开口的队列index,用来保存有可能是滑动窗口最大值得数字的下标。在存入一个数字的下标之前,首先要判断队列里已有数字是否小于待存入的数字。如果已有的数字小于待存入的数字,那么这些数字不可能是滑...
2020-04-28
0
0
4/27剑指offer
1.和为s的数字(1)合为s的两个数字:输入一个递增数组和一个数字s,在数组中任意找两个数,使得他们的和正好是s。思路:双指针,因为是排序数组,定义两个指针,一个在头一个在尾,如果二者相加小于s,那么就头++,大于s的话,尾++,等于s,返回这两个数。 class Solution { public...
2020-04-27
0
0
4/26剑指offer
1.数组中数字出现的次数(1)数组中只出现一次的两个数字数组中只有两个数只出现了一次,剩下的都出现两次,要求时间O(n),空间O(1)。思路:任何数异或自己都等于0.先将数组进行从头到尾的异或,得到的结果是两个数字的异或值,根据这个异或值第一个为1的位的位置,把数组分为两个数组,找出这两个数。 cl...
2020-04-26
0
0
4/25剑指offer
1.二叉搜索树的第k大节点思路:中序遍历的二叉搜索树是一个递增序列。 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : ...
2020-04-25
0
0
4/24 剑指offer
1.旋转数组的最小数字 //C++ 二分法 class Solution { public: int minNumberInRotateArray(vector<int> rotateArray) { if (rotateArray.empty()) return...
2020-04-24
0
0
4/23剑指offer
1.数组中数值和下标相等的元素假设一个单调递增数组里的每个元素都是整数并且是唯一的。请找出数组中任意一个数值等于其下标的元素。思路:利用二分查找。假设找到的数字的值大于他的下标,由于数组中数字唯一且单调递增,因此这个数字右面的数字都应该大于各自对应的下标,答案在左面。同理,加入找到数字的值小于它的下...
2020-04-23
0
0
4/22剑指offer
1.在排序数组中查找数字(1)数字在排序数组中出现的次数给一个排序数组,一个数字,查找这个数字出现的次数。要求ologn。思路:利用二分查找算法,分别确定重复出现的第一个k和最后一个k。 int GetFirstK(int *data,int length,int k,int start,int e...
2020-04-22
0
0
4/21剑指offer
1.两个链表的第一个公共节点思路:首先遍历两个链表得到他们的长度,就能知道哪个链表比较长,以及长的链表比短的链表多几个节点。在第二次遍历的时候,在较长的链表上先走若干步,接着同时在两个链表上遍历,找到的第一个相同的节点就是他们的第一个公共节点。 /* struct ListNode { in...
2020-04-21
0
0
首页
上一页
1
2
3
下一页
末页