自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 收藏
  • 关注

原创 笔试题:二分法找右边界纠错

递增序列,可能有重复,用二分法查找目标数的又边界。给出代码,请纠正错误(可能不只一处)int MyBinSearch(vector<int> nums, int target) { int left = 0; int right = nums.size(); while(left < right) { int mid = (left + right) /...

2019-11-03 17:55:38 417

原创 剑指offer - 面试题51: 数组中的逆序对 - C++

好开心!看了题没思路,看了讲解。被一点通:说实际上就是归并算法,于是动手搞出来:class Solution {public: int InversePairs(vector<int> data) { int count = 0; int n = data.size(); vector<int> tool(n)...

2019-08-29 16:38:53 524

原创 剑指offer - 面试题52: 两个链表的第一个公共节点 - C++

大概思路我记得。无任何参考写出来了第一次没通过是我想冒险试一下如何一句话定义两个指针// 编译错误,提示不能把ListNode*转为 ListNode型// ListNode *pNode1 = pHead1, pNode2 = pHead2; // 正确写法ListNode *pNode1 = pHead1, *pNode2 = pHead2;记住咯!我的代码:/*...

2019-08-22 17:30:54 331

原创 剑指offer - 面试题38: 连续子数组的最大和 - C++

书上用的是char*nowcoder中用的是string类型,并且加了两个点:1.按字典序输出结果解决:用vector自带的sort函数2.可能有重复的字符解决:交换时检测自己敲了大概,这两点参考之前通过的代码加上的。基本顺利通过小问题:把!= 写成了!==class Solution {public: vector<string> Perm...

2019-08-21 16:46:26 254

原创 剑指offer - 面试题62: 圆圈中最后剩下的数字 - C++

此题助我进入腾讯的实习,但是当时是参考书上的,今天就来回顾了一下老朋友。欣慰的是这是62题,在腾讯实习提前批笔试之前我就基本刷完了剑指。只要我想做的,就能做好;只要准备了,就比不准备好得多。书上用的list,主要用了erase()函数和迭代器的知识class Solution {public: int LastRemaining_Solution(int n, int m) ...

2019-08-19 22:29:29 212

原创 LeetCode - 101. Symmetric Tree - C++

由于想着二叉树一般考前中后序遍历,于是想着对称的树中序遍历,是回文。按这个思路实现后,提交错误,错误案例:[1,2,2,2,null,2]。天哪,狡猾,两边的数字一样。此时我想着,如果记叶节点的节点为null,这样遍历下来是不是可以解决上面的问题?实现之后发现还是不行。未通过案例:[1,2,2,2,null,2]。画出图来非常巧妙,惊到了。看来我的中序遍历彻底被否虽然上面的方法不行,也是有...

2019-07-22 22:39:42 131

原创 LeetCode - 32. Longest Valid Parentheses - C++

class Solution {public: int longestValidParentheses(string s) { int length = s.size(); if(length < 2) return 0; int dp[length]; int currentMax = 0; ...

2019-04-22 16:53:08 140

原创 LeetCode - 31. Next Permutation - C++

Solution有点看不懂借鉴此博客。第一种有点秀,用C++库中的函数class Solution {public: void nextPermutation(vector<int>& nums) { next_permutation(nums.begin(), nums.end()); }};哈哈人家要让你实现这个函数你却...

2019-04-20 09:42:39 207

原创 LeetCode - 21. Merge Two Sorted Lists & 23. Merge k Sorted Lists - C++

合并两个有序链表是二刷,之前牛客网写过,也有博客。新建节点:class Solution {public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode * pHead = new ListNode(-1); // 最后抛弃这个节点 ListNode * pNode...

2019-04-16 20:44:50 120

原创 LeetCode - 17. Letter Combinations of a Phone Number - C++

借鉴的这个博客,理解之后改为自己的风格解法一class Solution {public: vector<string> letterCombinations(string digits) { vector<string> result; if(digits.empty()) return result; ...

2019-04-12 11:06:19 152

原创 【华为2019年校园招聘】2019-4-10 软件题

题目我的代码#include <iostream>#include <utility>#include <queue>#include <math.h>using namespace std;int main() { int N, M; cin >> N >> M; int *...

2019-04-11 09:44:21 2635

原创 LeetCode - 11. Container With Most Water - C++

两个指针法。此题精髓在于判断如何移动指针:移动小的那个。因为高度取决于小的那个,所以移动小的才有可能增加。class Solution {public: int maxArea(vector<int>& height) { int size = height.size(); int currentMax = 0; ...

2019-04-11 09:32:30 207

原创 LeetCode - 5. Longest Palindromic Substring - C++

最长回文子字符串。借鉴做过的47. Palindromic Substrings,写出如下:class Solution {public: string longestPalindrome(string s) { int length = s.size(); int current = 0; int maxLength = 0...

2019-04-10 10:35:33 127

原创 【华为校园招聘】2019春实习模拟试卷 软件题demo

2019-04-03 16:39:28 1118

原创 LeetCode - 543. Diameter of Binary Tree - C++

Solution里的一种解法:先算路径的节点数,最后 -1;以每个节点为“根节点”的最长路径,找出最大值。最长路径是1+左子树深度+右子树深度树深度是1+max(左子树深度,右子树深度)递归。核心递归函数必须同时有两个作用:1.比出最长路径;2.计算深度代码如下:class Solution {public: int diameterOfBinaryTree...

2019-04-01 15:05:49 219

原创 LeetCode - 621. Task Scheduler - C++

Discuss区看到的:C++ 8lines O(n)吸收了它的思想后,我用数组实现hash,遍历一次:class Solution {public: int leastInterval(vector<char>& tasks, int n) { int hash[26]; memset(hash, 0, 26); ...

2019-04-01 11:03:55 284

原创 LeetCode - 347. Top K Frequent Elements - C++

哈希表+堆借鉴了这个博客大根堆O(nlogn)class Solution {public: vector<int> topKFrequent(vector<int>& nums, int k) { unordered_map<int, int> hash; priority_queue<pa...

2019-03-31 17:04:00 176

原创 LeetCode - 560. Subarray Sum Equals K - C++

看了Solution给的四种解法:1.暴力法,O(n3),它说超时2.从第1个元素到第 i 个元素累加和用一个数组 s [ i ] 存起来。子数组和=sum[end] -sum[start]。然后两层循环试遍每种情况.时间O(n2),空间O(n)3.和2差不多,只不过不用数组了,边加边比较.时间O(n2),空间O(1)class Solution {public: ...

2019-03-28 09:43:05 189

原创 剑指offer - 面试题42: 连续子数组的最大和 - C++

三刷,倒是写出来了,但是还是忽略了数组全都是负数的情况!两种解决方法之前已经讲清楚了。所以此题题眼在全是负数的情况!另外,只给出最大和的话,子数组左界没什么用,可以不写/***************************************************/今天同学说腾讯面试考到这道了,知道自己做过,但就是想不起来怎么做,很惶恐,很无奈。想了很久,去上网查...

2019-03-26 15:17:37 180

原创 LeetCode - 15. 3Sum & 1. Two Sum - C++

三和问题,二和问题头条爱考三和问题用了二和的核心代码。本准备回去写写二和,写完发现答案不对,没那么简单。题目让返回的是两数的下标,这样的话,排序之后下标就乱了。看了Solutoin、Discuss和百度的答案,几乎都是用哈希表来把搜索第二个数的复杂度从 O (n)降到O(1)。再有就是sort+自己设定一个类来存值与下标的映射,或者复制了一遍原数组,再遍历一次找出来它的原下标这些不那么优雅...

2019-03-25 10:35:30 250

原创 LeetCode - 406. Queue Reconstruction by Height - C++

刚开始写了写的思路,知道同高比位置,不同高不确定。感觉是要自己定义比较函数。然后进行不下去,看了讨论区。思路是先按从高到低排序,同高的第二个数小的排前面。然后先把最高的排好,然后处理次高,次高的位置是此时数组的下标因为:高个不在乎矮个插队。他只在乎他前面不比他矮的兄弟。自己写出了代码:class Solution {public: vector<pair<i...

2019-03-19 17:14:05 139

原创 LeetCode - 617. Merge Two Binary Trees - C++

由之前总结的:二叉树多半是想考前中后序遍历。这道显然是前序。因为涉及到三个数,循环写法不是很能hold住,于是先想办法递归。发现递归比循环容易思考且容易写,以后二叉树的题目优先考虑递归。自己写出的代码:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode...

2019-03-17 10:48:12 184

原创 剑指offer - 面试题24: 反转链表 - C++

三刷,凭借记忆很快写出了循环。和二刷几乎一样。但是递归还是不知如何下手,硬是想了出来,给自己点赞。而且比以前更简洁了class Solution {public: ListNode* ReverseList(ListNode* pHead) { return ReverseList(nullptr, pHead); } ListNode* Rever...

2019-03-16 17:35:02 196

原创 剑指offer - 面试题41: 数据流中的中位数 - C++

啥都不说了先上代码class Solution {private: vector&lt;int&gt; min; // 最小堆(右) vector&lt;int&gt; max; // 最大堆,其中所有元素比最小堆的所有元素小public: void Insert(int num) { if(((max.size() + min.s...

2019-03-14 17:43:29 254

原创 LeetCode - 198. House Robber & 213. House Robber II - C++

昨天腾讯笔试题:n个整数的圆环中取m个数,不能取相邻的,求可取出的最大和,同学提醒是LeetCode#213相似题目。#213是#198的变式,所以又做了一下198. House Robber// dp数组class Solution {public: int rob(vector&lt;int&gt;&amp; nums) { int length = n...

2019-03-10 10:32:14 221

原创 剑指offer - 面试题35: 复杂链表的复制 - C++

二刷:好几次才过:1.label写成val2.最后一个函数赋值逻辑错误3.random可能是nullptr,所以不能直接->random->next4.同一刷的第二。最后只有一个nullptr,需要手动赋一个nullptr。些许欣慰的是,一刷里的while-do do-while问题这次写的应该比较合理。class Solution {public: ...

2019-03-03 11:07:05 364

原创 剑指offer - 面试题34: 二叉树中和为某一值的路径 - C++

二刷:阿呀呀,其实看到题还是没思路,想了一会儿之后准备看之前的博客,但还是不甘心直接看代码,看了一下文字部分说path和result共用切之后要pop,于是还是自己去敲出来了,虽然挺波折的。由此可见,永远不要放弃思考,你可能比自己想象中要强,比之前做的还好。结果如下class Solution {public: vector<vector<int> &gt...

2019-03-01 16:04:02 201

原创 剑指offer - 面试题55扩展: 平衡二叉树 - C++

面试题55非扩展:二叉树深度,用递归很容易就写出来了,实际上是前序遍历。扩展题平衡二叉树,我的刚开始的思路也是从上到下求左右子树深度判断当前节点是否平衡&amp;&amp;递归左右子树是否平衡。但是自己隐约觉得这样重复遍历了子节点,应该从下向上只遍历一次。看书上果然是这个思路。书上指出这其实是二叉树的后序遍历,由于我自己的不熟练,导致并没有意识到这是在考后序遍历。思考一:去掌握二叉树的前中后序...

2019-02-23 11:16:51 433

原创 剑指offer - 面试题50: 第一个只出现一次的字符 - C++

二刷:看到题目之后,倒是一下子就想到了数组hash。但是不知道这个“第一次“怎么处理。看了书之后,书上是再次遍历字符。我在旁边写了一个思路是用两个hash表,一个记录出现次数,另一个第一次出现的位置。于是把它实现了:class Solution {public: int FirstNotRepeatingChar(string str) { int ha...

2019-02-21 15:54:09 274

原创 剑指offer - 面试题32扩展: 之字形打印二叉树 - C++

/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: v...

2019-01-22 10:37:58 316

原创 剑指offer - 面试题32扩展: 分行从上到下打印二叉树 - C++

/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: ...

2019-01-21 21:27:24 213

原创 剑指offer - 面试题29: 顺时针打印矩阵 - C++

二刷:看了两句书上的自己的总结,决定不能放弃,自己搞出来:class Solution {public: vector<int> printMatrix(vector<vector<int> > matrix) { int rows = matrix.size(); vector<int> resu...

2019-01-20 15:52:18 231

原创 剑指offer - 面试题25: 合并两个排序的链表 - C++

自己千辛万苦写出的循环:/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* Merge(ListNode* pHe...

2019-01-19 10:41:26 303

原创 剑指offer - 面试题22: 链表中倒数第k个节点 - C++

class Solution {public: ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) { if(pListHead == nullptr || k == 0) return nullptr; ListNode* pFront = pListHead; L...

2019-01-17 10:05:41 202

原创 剑指offer - 面试题21: 调整数组顺序使奇数位于偶数前面 - C++

class Solution {public: void reOrderArray(vector&lt;int&gt; &amp;array) { int len = array.size(); vector&lt;int&gt; odd, even; for(int i=0; i&lt;len; i++) { i...

2019-01-16 21:47:44 219

原创 剑指offer - 面试题13:机器人的运动范围 - C++

class Solution {public: int movingCount(int threshold, int rows, int cols) { if(threshold<0 || rows<1 || cols<1) return 0; int row=0, col=0; bool* v...

2019-01-15 15:55:09 342

原创 剑指offer - 面试题12:矩阵中的路径 - C++

class Solution {public: bool hasPath(char* matrix, int rows, int cols, char* str) { if(matrix==nullptr || rows&lt;1 || cols&lt;1 || str==nullptr ) { return false; ...

2019-01-15 11:16:00 333

原创 剑指offer - 面试题11: 旋转数组中的最小数字 - C++

class Solution {public: int minNumberInRotateArray(vector<int> rotateArray) { int len = rotateArray.size(); if(len == 0) return 0; if(len == 1) return rotateArray[0...

2019-01-14 21:30:20 158

原创 剑指offer - 面试题9:用两个栈实现队列 - C++

class Solution{public: void push(int node) { stack1.push(node); } int pop() { if(stack2.size() &lt;= 0) { while(stack1.size() &gt; 0) { int&...

2019-01-14 10:24:00 196 1

原创 剑指offer - 重建二叉树 - C++

二刷重头到尾自己写的,而且比原答案还好,不得不强调:永远不要放弃思考,你可能会做得更好!拿到题之后先手动在本子上尝试。凭记忆是根据前序确定根节点,在中序中找到根节点的位置从而把左右子树范围确定演练之后确定用递归确定递归核心函数的参数时候,秉持不重复的原则,刚开始确定有5个:TreeNode* reConstructBinaryTree(vector<int> pre...

2019-01-13 21:54:03 380

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除