自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 17贪心算法Ⅲ

1,绝对值排序的实现,只需要重写sort函数的cmp方法,令cmp返回值按照绝对值较大的判断结果返回。2,cmp函数返回值要加修饰符static3,k值还有富裕的时候,因为始终要交换最后一个元素,所以只用判断k的奇偶性即可,若为偶数次交换相当于不处理,若为奇数,则反转一次即可。1.暴力法需要两层遍历,第一层是遍历第i个加油站作为起点,第二层遍历是从i开始算油耗是否支撑再走回i,环形遍历。while更适合环形遍历,因此第二层用while。

2022-12-27 09:47:49 650 1

原创 16贪心算法Ⅱ

关键在于将跳跃方案转换为覆盖范围,不纠结具体怎么跳过去的。其次,for循环的判断条件是在i

2022-12-23 17:50:02 713

原创 15贪心算法Ⅰ

贪心算法的前提是将供给和需求先排序,大的资源优先满足大需求,然后将满足数进行加和,即得到全局最优。1.在for循环里面,要先更新res的值,然后再重置子区间。2.贪心算法的体现就是之前区间的和

2022-12-23 15:16:58 733

原创 卡尔曼滤波原理及c++实现

卡尔曼滤波是一种最优估计算法。用处:1)利用可测量值估算无法测量的量。2)对有测量噪声的物理量进行估计。常用于制导和导航、计算机视觉等。状态估计器[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wyl6RMng-1671698056041)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20221222145125380.png)]

2022-12-22 16:35:08 1359

原创 14.回溯算法

对于组合问题,采用回溯的方法暴力搜索所有满足的方案。在暴力搜索时,利用for循环对集合本身遍历,实现横向搜索,利用递归实现对纵向符合要求的方案元素深度进行搜索,搜到以后利用回溯返回for循环对应的根节点,开启下一次搜索。溯的方法暴力搜索所有满足的方案。在暴力搜索时,利用for循环对集合本身遍历,实现横向搜索,利用递归实现对纵向符合要求的方案元素深度进行搜索,搜到以后利用回溯返回for循环对应的根节点,开启下一次搜索。

2022-12-15 16:34:27 872

原创 12.二叉树Ⅱ

给你二叉树的根节点 ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。解题思路队列先进先出,符合一层一层遍历的逻辑,而是用栈先进后出适合模拟深度优先遍历也就是递归的逻辑。而这种层序遍历方式就是图论中的广度优先遍历,只不过我们应用在二叉树上。

2022-12-05 16:39:35 1336

转载 11.二叉树基础

刚刚我们说过了二叉树有两种存储方式顺序存储,和链式存储,顺序存储就是用数组来存,这个定义没啥可说的,我们来看看链式存储的二叉树节点的定义方式。int val;} };大家会发现二叉树的定义 和链表是差不多的,相对于链表 ,二叉树的节点里多了一个指针, 有两个指针,指向左右孩子。这里要提醒大家要注意二叉树节点定义的书写方式。在现场面试的时候 面试官可能要求手写代码,所以数据结构的定义以及简单逻辑的代码一定要锻炼白纸写出来。

2022-11-29 21:43:25 1605

转载 二叉树基础理论

确定终止条件: 写完了递归算法, 运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对,操作系统也是用一个栈的结构来保存每一层递归的信息,如果递归没有终止,操作系统的内存栈必然就会溢出。所以大家使用自己熟悉的编程语言写算法,一定要知道常用的容器底层都是如何实现的,最基本的就是map、set等等,否则自己写的代码,自己对其性能分析都分析不清楚!而广度优先遍历的实现一般使用队列来实现,这也是队列先进先出的特点所决定的,因为需要先进先出的结构,才能一层一层的来遍历二叉树。

2022-11-29 21:36:18 186

原创 10.栈与队列Ⅲ

本题第一反应用双指针做,写出了如下的代码,代码漏考虑了一旦滑窗移动,之前的max值可能出滑窗,因此某些测试案例无法通过。//存储结果max=0;i

2022-11-29 16:11:23 1889

原创 9.栈与队列Ⅱ

对于栈来说,若想访问栈顶元素,需要先判断栈不为空,不为空才能访问,否则会报错。没有一遍ac,错误在于:if判断相等写成了一个等号,size后面漏写了小括号。注意代码编写的严谨性,争取一次ac。由于测试案例中有极大数存在,因此存储的栈和运算的数字要定义成long long数据。将字符串转换为数字可以用stoi(string a)函数实现,返回的就是数值。

2022-11-28 20:50:26 1651

原创 8.栈和队列

队列两端开口,栈一端开口,因此用栈来模拟队列时需要用两个栈来实现,一个按照正常的入队顺序入栈a。另一个栈b按照a出栈的顺序将元素放入栈b,就实现了对栈a元素的逆序。这样出栈b顶端的元素就相当于出队头的元素。对于pop操作,需要记录队头元素,作为返回值。

2022-11-27 17:39:55 1751

原创 7.字符串总结

其实在基本操作上没有区别,但是 string提供更多的字符串处理的相关接口,例如string 重载了+,而vector却没有。所以想处理字符串,我们还是会定义一个string类型。

2022-11-27 11:34:22 1562

原创 6.字符串1

给定一个字符串s和一个整数k,从字符串开头算起,每计数至2k个字符,就反转这2k字符中的前k个字符。如果剩余字符少于k个,则将剩余字符全部反转。如果剩余字符小于2k但大于或等于k个,则反转前k个字符,其余字符保持原样。输入:s = "abcdefg", k = 2输出:"bacdfeg"请实现一个函数,把字符串s中的每个空格替换成"%20"。输入:s = "We are happy."输出:"We%20are%20happy."给你一个字符串s,请你反转字符串中单词的顺序。单词。

2022-11-27 10:57:56 1724

原创 哈希表(二)

ransomNote和magazine,判断ransomNote能不能由magazine里面的字符构成。如果可以,返回true;否则返回false。magazine中的每个字符只能在ransomNote中使用一次。输入:ransomNote = "a", magazine = "b"输出:false未看讲解,按自己思路写的,但是没有一遍ac。出bug的点在于vector初始化又写错了切记,一维vector初始化按照如下写法,用小括号,因为调用了构造函数二维vector定义及初始化按如下写法。

2022-11-26 13:31:15 1787

原创 第三章:哈希表

数组也是一种哈希表,下标代表key键值,元素值代表value。统计英文字母出现次数就可以用哈希表来记录,键值key对应英文字母的排序,value记录字母出现的次数。可以用s[i]-'a’将字符的ascii码转换为数组下标。编程时一定要先看返回值类型。本题的交集结果存储在set中,但是题目要求返回的是vector,最后在给返回值是要将set转化为vector。遍历数组时,可以用for :这种写法set的find函数返回的是迭代器,若找到,返回的是指向该元素的迭代器。若未找到,返回的是集合end的迭代器。

2022-11-24 09:58:55 2020

原创 链表二交换元素和删除元素

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

2022-11-22 22:30:14 2189

原创 第二章链表1

如果不定义有参构造函数,默认构造函数无参,在初始化链表时不能给值,需要分两步链表与数组性能对比性能分析。

2022-11-22 20:05:26 2056

原创 第一章 数组

1)数组遇到需要从两个方向同时比较的情况,考虑用双指针或双下标的方法2)在不遍历数组的情况下能够获取数组的头尾数据,灵活运用两端的数据,正序或倒序遍历、输出数组均可。注意,在遍历数组时,是用滑窗的尾下标来遍历,依次计算窗口尾部在0,1,2.。。。位置的情况。滑动的是窗口的头下标,不断移动头下标,判断是否还满足要求。在考虑返回值时,需要考虑如果窗口长度始终没有更新,说明没有符合条件的子数组,因而要返回0.这也是为什么初始化返回值时需要设置的比数组长度大。

2022-11-21 10:20:49 2106

原创 leetcode27 移除元素

leetcode 27 删除元素

2022-11-16 21:19:35 82

原创 【leetcode 704 二分查找】

leetcode 704

2022-11-16 20:55:24 607

原创 c++学习笔记

c++有两种定义字符串的方法,一种沿用了c语言的char[]数组的方式,另一种用string来定义。

2022-11-01 10:33:23 61

原创 c++程序实践

利用c++编写一个猜数字的程序,程序待编译调试。系统生成一个随机数,用户输入一个猜测的数字,系统返回猜测结果。

2022-10-31 16:25:52 60

原创 【leetcode刷题笔记】

leet code刷题记录

2022-10-31 14:44:30 86 1

空空如也

空空如也

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

TA关注的人

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