![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
数据结构与算法
guaqiu5
这个作者很懒,什么都没留下…
展开
-
剑指offer51 数组中的逆序对
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例 1:输入: [7,5,6,4]输出: 5来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shu-zu-zhong-de-ni-xu-dui-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。//在归并排序的基础上小小的改一下class Solution {publi.原创 2021-10-03 13:57:44 · 87 阅读 · 0 评论 -
力扣215 数组中的第k大元素
给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/kth-largest-element-in-an-array著作权..原创 2021-09-24 20:12:04 · 100 阅读 · 0 评论 -
力扣763 数据流中的第k大元素
设计一个找到数据流中第 k 大元素的类(class)。注意是排序后的第 k 大元素,不是第 k 个不同的元素。请实现 KthLargest类:KthLargest(int k, int[] nums) 使用整数 k 和整数流 nums 初始化对象。int add(int val) 将 val 插入数据流 nums 后,返回当前数据流中第 k 大的元素。示例:输入:["KthLargest", "add", "add", "add", "add", "add"][[3, [4, 5..原创 2021-09-24 20:06:32 · 79 阅读 · 0 评论 -
力扣1046 最后一块石头的重量
有一堆石头,每块石头的重量都是正整数。每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎。假设石头的重量分别为x 和y,且x <= y。那么粉碎的可能结果如下:如果x == y,那么两块石头都会被完全粉碎;如果x != y,那么重量为x的石头将会完全粉碎,而重量为y的石头新重量为y-x。最后,最多只会剩下一块石头。返回此石头的重量。如果没有石头剩下,就返回 0。示例:输入:[2,7,4,1,8,1]输出:1解释:先选出 7 和 8,得到 1,所以...原创 2021-09-24 19:11:21 · 82 阅读 · 0 评论 -
剑指 Offer 40. 最小的k个数(堆实现)
c++堆类模板代码#include<iostream>#include<vector>#include<algorithm>#include<functional>using namespace std;template<typename T>class Heap :public vector<T>{public: template<typename Func_T> Heap(Func_原创 2021-09-24 18:13:01 · 120 阅读 · 0 评论 -
力扣946 验证栈序列
给定pushed和popped两个序列,每个序列中的 值都不重复,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回 true;否则,返回 false。示例 1:输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]输出:true解释:我们可以按以下顺序执行:push(1), push(2), push(3), push(4), pop() -> 4,push(5), pop() -> 5, ...原创 2021-09-08 22:16:02 · 62 阅读 · 0 评论 -
力扣844 比较含退格字符串
给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。注意:如果对空文本输入退格字符,文本继续为空。示例 1:输入:S = "ab#c", T = "ad#c"输出:true解释:S 和 T 都会变成 “ac”。示例 2:输入:S = "ab##", T = "c#d#"输出:true解释:S 和 T 都会变成 “”。来源:力扣(LeetCode)链接:https://leetcode-cn.com/prob原创 2021-09-07 22:30:29 · 139 阅读 · 0 评论 -
面试题03.04 化栈为队
实现一个MyQueue类,该类用两个栈来实现一个队列。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2);queue.peek(); // 返回 1queue.pop(); // 返回 1queue.empty(); // 返回 false说明:你只能使用标准的栈操作 -- 也就是只有 push to top, peek/pop from top, size 和 is empty 操作是合法的。你所使..原创 2021-09-07 21:55:05 · 54 阅读 · 0 评论 -
力扣20 有效的括号
给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = "()"输出:true示例2:输入:s = "()[]{}"输出:true思路:搞个栈,凡是左括号 无脑堆到栈里面,碰到右括号,看栈顶元素是不是与之匹配的,不是直接false 是的话栈顶元素出栈,继续下一轮遍历,最后在看看栈是不是为空,为空就代表括号没问题cl...原创 2021-09-07 20:03:27 · 65 阅读 · 0 评论 -
力扣621 任务调度器
给你一个用字符数组tasks 表示的 CPU 需要执行的任务列表。其中每个字母表示一种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。在任何一个单位时间,CPU 可以完成一个任务,或者处于待命状态。然而,两个 相同种类 的任务之间必须有长度为整数 n 的冷却时间,因此至少有连续 n 个单位时间内 CPU 在执行不同的任务,或者在待命状态。你需要计算完成所有任务所需要的 最短时间 。示例 1:输入:tasks = ["A","A","A","B",".原创 2021-09-06 02:12:21 · 74 阅读 · 0 评论 -
力扣969 煎饼排序
/*思路:找到最大值,在将最大值反转到第一位,再将最大值反转到最后一位(即反转所有元素)再找到次大值,将次大值反转到第一位,再将次大值反转到倒数第二位(即反转所有元素-1) 以此类推直到结束*/class Solution {public:void reverse(vector<int>&arr,int n,vector<int>&ind) { for(int i=0,j=n-1;i<j;i++,j--) .原创 2021-09-06 01:22:56 · 90 阅读 · 0 评论 -
力扣860 柠檬水找零
class Solution {public: bool lemonadeChange(vector<int>& bills) {int five=0;int ten=0;int twenty=0;for(int i=0;i<bills.size();i++){if(bills[i]==5) {five++;}if(bills[i]==10){ if(five==0) return false; else {five--;ten++;}}.原创 2021-09-05 02:34:50 · 130 阅读 · 0 评论 -
力扣933 最近的请求次数
class RecentCounter {public:deque<int> deq; RecentCounter() { } int ping(int t) { deq.push_back(t); while(t-deq.front()>3000) deq.pop_front();//当与队首元素大小相差3000,队首出队 return deq.size();//dequeue留下的元素均是与队尾元素相差<3.原创 2021-09-05 01:55:30 · 56 阅读 · 0 评论 -
力扣641 设计双端队列
class MyCircularDeque {public: int capcaity; int length; int head; int rear; vector<int>vec; MyCircularDeque(int k) :vec(k){ capcaity=k; length=0; head=0; rear=0; } /** Adds an ite.原创 2021-09-05 01:41:00 · 98 阅读 · 0 评论 -
力扣622 设计循环队列
class MyCircularQueue {public: int capcaity; int length; int top; int rear; vector<int>vec; MyCircularQueue(int k) :vec(k){ capcaity=k; length=0; top=0; rear=0; } bool enQueue.原创 2021-09-04 02:44:24 · 172 阅读 · 0 评论 -
86 分隔链表
class Solution {public: ListNode* partition(ListNode* head, int x) { if (head==nullptr||head->next==nullptr) return head; ListNode big; ListNode small; ListNode *p=head; ListNode *pb=&big; ListNo.原创 2021-08-30 01:06:36 · 74 阅读 · 0 评论 -
力扣206 反转链表
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next.原创 2021-08-30 00:37:02 · 50 阅读 · 0 评论 -
力扣92 反转链表II
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next.原创 2021-08-30 00:34:40 · 57 阅读 · 0 评论