手撕代码
面试题积累---手撕代码
~青萍之末~
弱者总有弱者的理由
展开
-
手撕代码之数组
一、二维数组中的查找(leetcode 240)class Solution {public: bool searchMatrix(vector<vector<int>>& matrix, int target) { if (matrix.empty()) return false; int col...原创 2019-08-14 22:54:42 · 742 阅读 · 0 评论 -
手撕代码之其他类型
文章目录一、根据rand7生成rand10(leetcode 470)二、快速幂(leetcode 50)一、根据rand7生成rand10(leetcode 470)思路:先根据rand7等概率生成rand49【(rand7() - 1) * 7 + (rand7() - 1)】,再生出rand40,最后生成rand10。class Solution {public: // 先...原创 2019-08-12 20:23:13 · 362 阅读 · 0 评论 -
手撕代码之动态规划
文章目录一、最大连续子序列和(leetcode 53)一、最大连续子序列和(leetcode 53)原创 2019-07-21 22:42:57 · 688 阅读 · 0 评论 -
手撕代码之字符串
文章目录一、反转字符串中的每一个单词(leetcode 151、557)二、多个字符串的最长公共前缀(leetcode 14)一、反转字符串中的每一个单词(leetcode 151、557)class Solution {public: string reverseWords(string s) { stringstream ss(s); string token...原创 2019-04-16 16:09:29 · 866 阅读 · 0 评论 -
手撕代码之栈和队列
文章目录一、括号匹配(leetcode 20)一、括号匹配(leetcode 20)class Solution {public: bool isValid(string s) { if (s.empty()) return true; stack<char> stk; stk.push(s[0]);...原创 2019-04-16 16:00:40 · 320 阅读 · 0 评论 -
手撕代码之二叉树
文章目录一、根据排序数组构造二叉搜索树(leetcode 108)二、根据前序遍历和中序遍历构造二叉树(leetcode 105)三、二叉树的非递归遍历(leetcode 94、144、145)四、二叉树中和为某一值的路径(leetcode 112)五、二叉树的最大深度(leetcode 104)六、二叉树的层次遍历(leetcode 102)七、判断两个二叉树是否相同(leetcode 100)...原创 2019-04-09 17:17:18 · 966 阅读 · 0 评论 -
手撕代码之链表
文章目录一、反转链表(leetcode 206)二、两个链表的交点(leetcode 160)三、链表的中间结点(leetcode 876)四、判断链表是否存在环(leetcode 141)五、输出链表环的入口结点(leetcode 142)六、删除链表中倒数第k个节点(leetcode 19)七、合并两个排序链表(leetcode 21)八、O(1)时间删除链表中的一个结点(leetcode 2...原创 2019-04-09 17:08:19 · 1086 阅读 · 2 评论 -
LRU的实现
LRU作为页面置换算法和Redis内存淘汰策略,是很重要的一种算法,在面试中经常要求手写,下面使用list+unordered_map实现了LRU。class LRUCache {public: int sz; // list存储所有的key和value list<pair<int, int>> lst; // 存储每一个key在list中的结点位置(便于l...原创 2019-03-28 19:37:02 · 316 阅读 · 0 评论 -
String类的实现
class myString{public: myString(const char *str = nullptr) { data = new char[strlen(str) + 1]; strcpy(data, str); } myString(const myString &str) { if (this != &str)// 和自己比较 { ...原创 2019-03-28 16:05:42 · 288 阅读 · 0 评论 -
快排及链表排序
文章目录一、普通的快排二、链表的创建三、链表的冒泡排序四、链表快排一、普通的快排void QuickSort(vector<int> &vec, int low, int high){ int pivot = vec[low]; // 选择第一个元素作为枢纽元 int mid = low; // mid总是指向最后一个比枢纽元小的位置 if (low >= h...原创 2019-03-27 21:29:54 · 1115 阅读 · 0 评论