自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 二分法搜索插入的位置

二分法的灵活使用

2022-08-09 18:09:33 113 1

原创 操作系统//进程状态转换模拟(STLqueue、时间片轮转)

用STLqueue实现三状态图转换

2022-06-01 17:03:28 347

原创 day32//删除字符串中所有相邻重复项

注:可以拿字符串直接作为栈class Solution {public: string removeDuplicates(string s) { string st; for(int i =0;i<s.length();i++) { if(st.empty()||st.back()!=s[i])//当原字符串中的元素与新串最末尾元素不同时,压入字符串 { st.pus...

2022-05-23 10:47:05 121

原创 day31//有效的括号

用栈实现括号匹配问题:思路:运用栈后进先出的特点,用一个栈来存对应的右括号,遍历字符串,当出现相等右括号时,就pop(),若出现不相等右括号时,就reeturn falseclass Solution {public: bool isValid(string s) { stack<int> st; for (int i = 0; i < s.size(); i++) { if (s[i] == '(') st.pus...

2022-05-22 17:17:48 100

原创 day30//用队列实现栈

思想:用一个队列即可,用循环将队首元素放到队尾(除最后一个元素外),然后顺序出队列实现函数:push(x) -- 元素 x 入栈pop() -- 移除栈顶元素top() -- 获取栈顶元素empty() -- 返回栈是否为空class MyStack {public: queue<int> que;//创建队列 MyStack() { }//放入队列 void push(int x) { que.push(x)...

2022-05-21 12:11:21 81

原创 day29//用栈实现队列

思路:用两个栈实现,一个输入栈,一个输出栈实现函数:push(x) -- 将一个元素放入队列的尾部。pop() -- 从队列首部移除元素。peek() -- 返回队列首部的元素。empty() -- 返回队列是否为空class MyQueue {public: stack<int> stIn; stack<int> stOut; MyQueue() { } //push() void push(int x) {...

2022-05-20 13:32:41 122

原创 day28//KMP求重复的子字符串

给定一个非空的字符串,检查是否可以通过由它的一个子串重复多次构成。class Solution {public://构造next数组(前缀表减1) void getNext (int* next, const string& s){ next[0] = -1; int j = -1; for(int i = 1;i < s.size(); i++){ while(j >= 0 && ...

2022-05-18 15:18:59 114

原创 day27//KMP实现strStr()函数

解题思路:(1)构造next数组:初始化 处理前后缀不相同的情况 处理前后缀相同的情况(2)使用next数组进行匹配代码如下:class Solution {public: void getNext(int* next, const string& s) { int j = -1; next[0] = j; for(int i = 1; i < s.size(); i++) { // 注意i从1开始 ...

2022-05-14 12:00:25 252

原创 day26//剑指Offer58-II.左旋转字符串

解题思路:反转区间为前n的子串 反转区间为n到末尾的子串 反转整个字符串方法一:class Solution {public: void swapNum(string &s, int start, int end) { for(int i = start,j = end;i<j;i++,j--) { swap(s[i],s[j]); } } string reverseLeft...

2022-05-13 16:59:47 64

原创 day25//翻转字符串里的单词

解题思路:1.移除多余空格2.将整个字符串反转3.将每个单词反转class Solution {public: // 反转字符串s中左闭又闭的区间[start, end] void reverse(string& s, int start, int end) { for (int i = start, j = end; i < j; i++, j--) { swap(s[i], s[j]); } ...

2022-05-13 16:43:12 42

原创 day24//剑指Offer 05.替换空格

双指针法的应用

2022-05-08 11:18:17 71

原创 day23//反转字符串

第一种题型:设置两个指针分别从头部和尾部向中间靠拢,并且两两交换void reverseString(vector<char>& s) { for (int i = 0, j = s.size() - 1; i < s.size()/2; i++, j--) { swap(s[i],s[j]); }}第二种题型:给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。如果剩余字符少于...

2022-05-07 11:09:25 48

原创 day22//四数相加 ||

class Solution {public: int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) { unordered_map<int,int>map;//key:a+b的数值,value:a+b数值出现的次数 for(int a :...

2022-05-04 14:26:46 135

原创 day21//四数之和(双指针法)

在三数之和的基础上再套一层for循环,用来添加第四个数class Solution {public: vector<vector<int>> fourSum(vector<int>& nums, int target) { vector<vector<int>> result;//二维容器 sort(nums.begin(), nums.end());//排序 for (int ...

2022-04-29 14:55:27 194

原创 day20//三数之和(双指针法)

用两个整形变量作为指针的作用来求三数之和

2022-04-27 20:03:18 94

原创 day19//快乐数

什么是快乐数?对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。如果 n 是快乐数就返回 True ;不是,则返回 False 。classSolution{public://定义一个方法用来获取一个数n的每个位数上的平方和intgetn(intn){intsum=0;w...

2022-04-25 11:57:07 52

原创 day18//输出两个数组的交集

哈希数据结构:unordered_setunordered_set 容器,可直译为“无序 set 容器”。即 unordered_set 容器和 set 容器很像,唯一的区别就在于 set 容器会自行对存储的数据进行排序,而 unordered_set 容器不会,unordered_set 容器不能存放重复的元素。classSolution{public:vector<int>intersection(vector<int>&nums1,ve...

2022-04-24 13:09:16 712

原创 day17//哈希表的简单应用

有效的字母异位词、赎金信什么是字母异位词?给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例1: 输入: s = "anagram", t = "nagaram" 输出: true示例 2: 输入: s = "rat", t = "car" 输出: falseclassSolution{public:boolisAnagram(strings,stringt){intrecord[26]={0...

2022-04-23 11:39:22 422

原创 day16//环形链表

主要分为两步:第一步:判断是否有环(fast指针一次走两个节点,slow指针一次走一个节点,当同时指向一个节点时,有环)第二步:找到环的入口节点(一个指针从头节点开始走,一个指针从第一次相遇节点走,同时一个节点一个节点走,再次相遇的节点即为环入口节点)(本题主要考察思维,代码比较简洁,以下讲解细节部分不太具体,如有不懂的,可参考题解力扣https://leetcode-cn.com/problems/linked-list-cycle-ii/)classSolution{public..

2022-04-22 22:32:08 298

原创 C++访问声明

为什么用访问声明?对于私有继承,基类的公有成员函数变成了派生类的私有成员函数,这时外界就无法利用派生类的对象直接调用基类的成员函数,而只能通过调用派生类的成员函数间接地调用基类的成员函数。访问声明的作用:把基类的保护成员或公有成员直接写至私有派生类定义式中的同名段中,同时给成员名前冠以积累名和作用域标识符::eg:class A{public:A(int x1){x = x1;}void print(){cout<<x;}private:int x

2022-04-21 21:28:18 1381

原创 day15//链表相交(比较指针)

双指针比较

2022-04-20 17:08:02 1138

原创 day14//删除链表的倒数第N个节点

方法一:暴力法(先遍历得到长度,再用长度减去N即可获得需要删除节点前的节点位置)classSolution{public:ListNode*removeNthFromEnd(ListNode*head,intn){ListNode*dummyhead=newListNode(0);dummyhead->next=head;ListNode*cur=head;intm=0...

2022-04-19 22:38:35 350

原创 day13//两两交换链表中的节点(设虚拟头节点)

两两交换链表中的节点

2022-04-18 10:49:08 248

原创 day12//反转链表(双指针法)

用双指针法反转链表

2022-04-17 10:50:33 343

原创 day11//找到数组中和为目标值的两个整数,返回下标(两数之和)

使用for循环的暴力解法

2022-04-16 10:47:26 136

转载 day11//设计链表(设虚拟头节点)

classMyLinkedList{public://定义链表节点结构体structLinkedNode{intval;LinkedNode*next;LinkedNode(intval):val(val),next(nullptr){}};//初始化链表MyLinkedList(){_dummyHead=newLinkedNode(...

2022-04-15 23:09:33 418 1

原创 day10//while(i--)和while(--i)

以i--为例:int i = 2;while(i--)//执行了2次{cout<<i;}i++也类似--i:int i = 2;while(--i)//执行了1次{cout<<i;}小记:符号在前,则加加或减减在前 符号在后,则加加或减减在后...

2022-04-14 22:41:35 145

转载 unity2D//终极跳跃(可实现二段跳)

using System.Collections;using System.Collections.Generic;using UnityEngine;public class FinalMove : MonoBehaviour{ private Rigidbody2D rig; private Collider2D coll; private Animator anim; // public Collider2D discoll;//用于下蹲关闭头部碰撞体 ...

2022-04-13 22:54:49 489

原创 day9//链表中删除指定元素(附数组与链表的区别)

用两种方法删除链表中的指定元素(有虚拟头节点和无虚拟头节点)

2022-04-13 17:33:49 531

原创 day8//c++螺旋矩阵

classSolution{public:vector<vector<int>>generateMatrix(intn){vector<vector<int>>res(n,vector<int>(n,0));//使用vector定义一个二维数组intstartx=0,starty=0;//定义每循环一个圈的起始位置intloop=n/2...

2022-04-12 22:29:39 129

原创 day7//INT_MAX

INT_MAX是一个很大的数,一般用在数组中求最小值。在开头预设一个min,并将其赋值为INT_MAX,再让每一个数组中的元素与之比较int min = INT_MAX;for(arr[i]<min){min = arr[i];}

2022-04-11 09:01:37 252

原创 day6//滑动窗口(求子数组长度)

classSolution{public:intminSubArrayLen(inttarget,vector<int>&nums){intresult=INT_MAX;//初始化长度inti=0;intsublenth=0;intsum=0;for(intj=0;j<nums.size();j++){sum+=nums[j]...

2022-04-09 23:09:33 40

原创 day5//a[i++]等于a[i]

a[i++]后自增:eg:a[i]=1;i=1;int x = a[i++]=1;//x = 1,i = 2

2022-04-08 13:29:25 55

原创 day4//vector中sort()的使用

sort(nums.begin(),nums.end())从小到大排序class Solution {public:vector<int> sortedSquares(vector<int>& nums) {int size = nums.size();int j=0;for(int i =0;i<size;i++){nums[j]=nums[i]*nums[i];j++;}sort(nums.begin(),nums....

2022-04-07 22:20:29 218

原创 day3//退格字符#

退格字符会删除自己和前一个字符应用例子:比较两个含退格字符串是否相等思想:先创建一个栈用来装不为‘#’的值,然后每个#弹出一个字符,最后再比较两个不含#的字符串

2022-04-06 18:20:08 178

原创 day2//二分法(左闭右闭)获得左右边界

classSolution{public:vector<int>searchRange(vector<int>&nums,inttarget){intleftBorder=getLeftBorder(nums,target);intrightBorder=getRightBorder(nums,target);//情况一if(leftBorder...

2022-04-05 18:03:47 52

转载 每日收获//day1 二分法(左闭右闭)

class Solution {public: int search(vector<int>& nums, int target) { int left = 0; int right = nums.size() - 1; // 定义target在左闭右闭的区间里,[left, right] while (left <= right) { // 当left==right,区间[left, right]依然有效,所以用 &lt.

2022-04-03 11:38:27 28

空空如也

空空如也

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

TA关注的人

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