![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
牛客网
paopaotiantianquan
一点一点,慢慢来
展开
-
最小的k个数
题意:这里只要排序就可以找出最小的k个数,但是注意如果容器存储的数没有k个数,则返回空;class Solution {public: vector<int> GetLeastNumbers_Solution(vector<int> input, int k) { vector<int>output; if(k > input.size()) return output; sort(input.begin.原创 2020-12-22 20:31:55 · 49 阅读 · 0 评论 -
实现二叉树的先序,中序,和后序遍历
题意:先序、中序、后序,分别为根左右,左根右,左右根;/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */class Solution {public: /** * * @param root TreeNode类 the root of binary tree * @return int整型vector<ve.原创 2020-12-22 20:27:54 · 156 阅读 · 0 评论 -
二分查找
方法:用二指针法:class Solution {public: /** * 二分查找 * @param n int整型 数组长度 * @param v int整型 查找值 * @param a int整型vector 有序数组 * @return int整型 */ int upper_bound_(int n, int v, vector<int>& a) { // write code.原创 2020-12-20 15:09:43 · 64 阅读 · 0 评论 -
判断链表中是否有环
这里可以使用使用unordered_set,避免排序;当我们迭代链表是,当一次查找这个地址,发现set中有,那么我们判断这里有环;/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: b.原创 2020-12-20 14:03:15 · 72 阅读 · 0 评论 -
设计LRU缓存结构
LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间 t,当须淘汰一个页面时,选择现有页面中其 t 值最大的,即最近最少使用的页面予以淘汰。这里可以模仿队列,先进先出;题意:如果第一个数为1,为插入,当内存大于设定的K值时,把最不常用的删除,以为队首;如果第二个数为2,寻找key值相同的数,把他变成最常用的,把它删除,再把它插入;class So.原创 2020-12-20 13:55:47 · 74 阅读 · 0 评论 -
反转链表
这里是写一个反转链表,利用头插法;把之前的链表依次循环,插在新建的节点之后,他的新节点为这个节点的下个节点;class Solution {public: ListNode* ReverseList(ListNode* pHead) { ListNode *pnew = new ListNode(-1); ListNode *cur = pHead; while(cur != NULL) { ListN.原创 2020-12-18 20:33:58 · 68 阅读 · 1 评论