Toggle navigation
我太菜了
Home
About
Tags
我太菜了
喜欢写Hello World的未来程序员.
把字符串转换成整数
你快乐吗?
把字符串转换成整数 C++,字符串,注意会出现字母。 class Solution { public: int StrToInt(string str) { if (str.empty()) return 0; int sign = 1; if (*str.begin() == '-') { sign = -...
Posted by bbkgl on September 26, 2019
扑克牌顺子
你快乐吗?
扑克牌顺子 C++,两种方法。 排序后判断王的数量能不能补齐顺子的空缺; 不排序,最大值与最小值的差是否小于4。 以上两种都要注意的几个点: 除了0以外,出现任何重复的数字都说明不能出现顺子; 空序列; 第二种陪了女朋友再更新。 更新第二种方法: class Solution { public: bool IsContinuous(vector&...
Posted by bbkgl on September 26, 2019
平衡二叉树
你快乐吗?
平衡二叉树 C++,AVL树,就是左右子树的高度差不能超过1,这个很容易判断啦。 注意,本题说的AVL树不一定遵照BST树的规则,搞得我以开始一直按BST+平衡的标准去写。。。 class Solution { public: bool IsBalanced_Solution(TreeNode* pRoot) { bool ans = true; ...
Posted by bbkgl on September 26, 2019
左旋转字符串
你快乐吗?
左旋转字符串 C++,字符串。 有一个很简单的道理, 就是XY变成YX,可以先XY翻转,然后再XY分别翻转,这个过程脑补非常简单。同理XY先分别翻转,然后再整体翻转也是可以的。 class Solution { public: string LeftRotateString(string str, int n) { if (str.empty()) return...
Posted by bbkgl on September 26, 2019
孩子们的游戏(圆圈中最后剩下的数)
你快乐吗?
孩子们的游戏(圆圈中最后剩下的数) C++,数学题。 真的是一道纯粹的数学题。 网上的解析都是推公式,我这里给出一个例子说明。。。 为了保证排版不乱,例子放在代码块里。 n = 6, m = 3 第4行的数字表示序号,以下先模拟一遍过程 0 1 2 3 4 5 0 1 2 3 4 5 3 4 5 0 1 0 1 3 4 4 0 1 4 0 0 ----所...
Posted by bbkgl on September 26, 2019
字符串的全排列
你快乐吗?
字符串的排列 C++,这道题和leetcode47是几乎一样的,一个对数字无重复全排列,一个队字母无重复全排列。 思路如下: 其实这个全排列算法就是固定一个数的位置(left),然后从下一位数再开始全排列(递归过程)…直到最后一位数,模拟手动全排列的过程; 所以如果要去重的话,只要控制每次排列时,固定的那个数是不一样的就行了; 因为固定的数不一样,那从这个数开始产生的全排...
Posted by bbkgl on September 26, 2019
复杂链表的复制
你快乐吗?
复杂链表的复制 C++,链表深拷贝。 这里可以直接在原链表上扩充,然后分裂成两个链表。 将原链表的每个结点复制一份并放每个结点之后,比如[1, 2, 3, 4, null]—>[1, 1, 2, 2, 3, 3, 4, 4, null]; 然后遍历每个原结点,让其拷贝结点的random指针指向其random结点的拷贝结点。比如[1, 1, 2, 2, 3, 3, 4,...
Posted by bbkgl on September 26, 2019
和为S的连续正数序列
你快乐吗?
和为S的连续正数序列 C++,双指针。 用指针left、right维护一个窗口,将窗口内所有数之和与sum对比,然后根据结果调整窗口大小。如果大,left++,如果小,right++。 等差数列求和。。。 class Solution { public: vector<vector<int>> FindContinuousSequence(int su...
Posted by bbkgl on September 26, 2019
和为S的两个数字
你快乐吗?
和为S的两个数字 C++,双指针。 一个指针left指向数组头,一个right指向数组尾部。按理说我们应该将每个数都和其他n-1个数组合一下求和,但是题中给的其实是有序序列。这样就能利用有序序列的特性: 左边指针往中间移动和会越来越大; 右边指针往中间一定和会越来越小; 两个数距离越远,乘积越小,反之越大。 所有就使用双指针往中间移动就行了。 class Solut...
Posted by bbkgl on September 26, 2019
合并两个排序的链表
你快乐吗?
合并两个排序的链表 /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* Merge(ListNode* pHead1, ListNode* pHead...
Posted by bbkgl on September 26, 2019
← Newer Posts
Older Posts →
FEATURED TAGS
Blog
leetcode
C++
剑指offer
http
Raft
Linux
Hadoop
设计模式
CV
链表
动态规划
图
拓扑排序
快排
二叉树
leveldb
数学
数组
二分
dfs
profile
hash表
字符串
贪心
01背包
最小堆
单调栈
luajit
计算机网络
操作系统
共享内存
linux
原地哈希
双指针
滑动窗口
UE4
编译原理
ABOUT ME
写过Hello World, 下过矿。
简
知
✉️ zoujiakun@zju.edu.cn
FRIENDS
飞洋
滔滔
我的知乎
女朋友知乎