自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++ 贪心算法 最佳加油方案

已知一条公路上,有一个起点与一个终点,这之间有n个加油站;已知这n个加油站到终点的距离d与各个加油站可以加油的量l,起点位置至终点的距离L与起始时刻邮箱中汽油量P;假设使用1个单位的汽油即走1个单位的距离,邮箱没有上限,最少加几次油,可以从起点开至终点?(如果无法达到终点,返回-1)#include<vector>#include<algorithm>#include...

2020-02-29 13:32:06 441

原创 C++ 贪心算法射击气球

已知一个平面上有一定数量的气球,平面可以看做一个坐标系,在平面的x轴的不同位置安排弓箭手向y轴方向射箭,弓箭可以向y轴走无穷远;给定气球的宽度xstart<=x<=xend。问至少需要多少弓箭手,将全部气球打爆?例如:四个气球: [[10,16],[2,8],[1,6],[7,12]],至少需要2个弓箭手。#include<algorithm>#include<...

2020-02-29 12:03:30 891

原创 C++ 贪心算法 跳跃游戏_最少跳跃次数

一个数组存储了非负整型数据,数组中的第i个元素a[i],代表了可以从数组第i个位置最多向前跳跃a[i]步;已知数组各元素的情况下,确认可以从第0位置跳跃到数组最后一个位置,求最少需要跳跃几次?#include<vector>class Solution{public: Solution(){} ~Solution(){} int jump(std::vector<i...

2020-02-29 11:09:52 938 1

原创 C++ 贪心算法 跳跃游戏

一个数组存储了非负整型数据,数组中的第i个元素a[i],代表了可以从数组第i个位置最多向前跳跃a[i]步;已知数组各元素的情况下,求是否可以从数组的第0个位置跳跃到数组的最后一个元素的位置?#include<vector>class Solution{public: Solution(){} ~Solution(){} bool CanJump(std::vector&l...

2020-02-28 23:57:46 354

原创 C++ 贪心算法 移除k个数字

移除一个使用字符串表示的非负整数num,将num中的k个数字移除,求移除k个数字后,可以获得的最小的可能的新数字。#include<vector>#include<string>class Solution{public: Solution() {} ~Solution(){} std::string removeKdigits(std::string nu...

2020-02-28 20:19:30 666

原创 C++ 贪心算法 摇摆序列

一个整数序列,如果两个相邻元素的差恰好正负(负正)交替出现,则该序列被称为摇摆序列。一个小于2个元素的序列直接为摇摆序列。#include<vector>class Solution{public: Solution(){} ~Solution(){} int wiggleMaxLength(std::vector<int>& nums) { i...

2020-02-28 18:13:41 1033

原创 C++ 贪心算法 分糖果

已知一些孩子和一些糖果,每个孩子有需求因子g,每个糖果有大小s,当某个糖果的大小s>=某个孩子的需求因子g时,代表该糖果可以满足孩子;求使用这些糖果,最多能满足多少孩子?(某个孩子只能用1个糖果满足)例如:需求因子组g=[5,10,2,9,15,9];糖果大小数组s=[6,1,20,3,8];最多可以满足3个孩子。#include<vector>#include<...

2020-02-28 16:42:55 2529

原创 C++ vector.size() warning C4018

node_vec为vector若写为 for ( int j = 1; j< node_vec.size(); j++) { node_vec[j - 1]->next = node_vec[j]; }也会运行得到正确的结果,但会有warning:warning C4018: “<”: 有符号/这是由于C++中vector的size()为unsigned...

2020-02-28 14:12:47 326

原创 算法 时间复杂度

排序的最佳复杂度为: O(nlogn)补充中…

2020-02-26 21:14:12 72

原创 C++ Python 排序链表的合并-a

已知两个已排序链表头节点指针l1与l2,将这两个链表合并,合并后认为有序的,返回合并后的头节点。思路:比较l1和l2指向的节点,将较小的节点插入到pre指针后,并向前移动较小节点对应的指针。#include <stdio.h>struct ListNode{ int val; ListNode* next; ListNode(int x) : val(x), next(...

2020-02-26 20:51:13 109

原创 C++ Python 复杂的链表的深度拷贝

已知一个复杂的链表,节点中有一个指向本链表任意某个节点的随机指针(也可以为空),求这个链表的深度拷贝。#include<stdio.h>#include<map>#include<vector>struct RandomListNode{ int label; RandomListNode *next, * random; RandomList...

2020-02-26 20:24:02 255

原创 C++ STL map

#include <stdio.h>#include<map>struct RandomListNode{ int label; RandomListNode* next, * random; RandomListNode(int x): label(x), next(NULL), random(NULL){}};int main(){ std::map...

2020-02-26 18:35:29 82

原创 C++ 链表划分

已知链表头指针head与数值x,将所有小于x的节点放在大于或等于x的节点前,且保持这些节点的原来的位置。head->val 可写为(*head).val#include<stdio.h>#include<set>struct ListNode{ int val; ListNode* next; ListNode(int x) : val(x), nex...

2020-02-26 16:44:53 294

原创 C++ Python 链表求环

已知链表中可能存在环,若有环返回环起始节点,否则返回MULL。//方法一,使用set求环起始节点。//遍历链表,将链表中节点对应的指针(地址)插入set。 在遍历时插入节点前,需//要在set中查找,第一个在set中发现的的节点地址,即是链表环的起点。//Runtime: 24 ms,Memory Usage: 12 MB。class Solution{public: Soluti...

2020-02-26 15:53:25 159

原创 C++ Python 求两个链表的交点

已知链表A的头节点指针headA,链表B的头节点指针headB。两个链表相交,求两链表交点对应的节点如果两个链表没有交点,则返回NULL;在求交点的过程中,不可以破坏链表的结构或者修改链表的数据域;可以确保传入的链表A与链表B没有任何环;实现算法尽可能时间复杂度O(n),空间复杂度O(1)#include<stdio.h>#include<set>using...

2020-02-26 10:38:19 258

原创 C++ set的用法

迭代器与指针的功能类似。set的特性是,所有元素都会根据元素的键值自动排序,set的元素不像map那样可以同时拥有实值(value)和键值(key),set元素的键值就是实值,实值就是键值。set不允许两个元素有相同的键值。set的各成员函数列表如下:begin()–返回指向第一个元素的迭代器clear()–清除所有元素count()–返回某个值元素的个数empty()–如果集合为空...

2020-02-25 19:42:52 140

原创 C++ 链表部分逆序

已知链表头节点指针head,将链表从位置m到n逆序。(不申请额外空间)#include<stdio.h>struct ListNode{ int val; //数据域 ListNode* next; //指针域 ListNode(int x): val(x),next(NULL) {} //构造函数};class Solution{publ...

2020-02-25 17:06:54 384

原创 C++ 循环条件中的m++和++m

while (–m)m先自减再判断,判断时经过自减后是从m-1到1,m本身是从m到2,共m-1次循环while (m–)m先判断再自减,判断时未自减是从m到1,m本身是从m到1,共m次循环...

2020-02-25 15:49:55 3086

原创 C++ Python 链表逆序 反转链表

已知链表头节点指针head,将链表逆序。(不可申请额外空间)#include<stdio.h>struct ListNode{ int val; //数据域 ListNode* next; //指针域 ListNode(int x): val(x),next(NULL){} //构造函数};class Solu...

2020-02-25 12:18:54 189

原创 C++ 链表

#include <stdio.h>struct ListNode{ int val; //存储元素的数据域 ListNode* next; //存储下一个节点地址的指针域};int main(){ ListNode a; ListNode b; ListNode c; ListNode d; ListNode e; a.val = 10;...

2020-02-24 23:46:45 61

原创 C++ 堆heap 寻找中位数

设计一个数据结构,该数据结构动态维护一组数据,且支持如下操作:添加元素:void addNum(int num),将整型num添加至数据结构中。返回数据的中位数:double findMedian(),返回其维护的数据的中位数。中位数定义:若数据个数为奇数,中位数是该数组排序后中间的数。若数据个数为偶数,中位数是该数据排序后中间的两个数字的平均值。最直观的方法:存储结构使用数组...

2020-02-24 22:06:38 1153

原创 C++ 堆 heap 求数组中第K大的数

已知一个未排序的数组,求这个数组中第K大的数字。思路:维护一个K大小的最小堆,堆中元素个数小于K时,新元素直接进入堆;否则当堆顶小于新元素时,弹出堆顶,将新元素加入堆。解释:由于堆是最小堆,堆顶是堆中最小元素,新元素都会保证比堆顶小,否则新元素替换堆顶,故堆中K个元素是已扫描的元素里最大的K个;堆顶即为第K大的数。设数组长度为N,求第K大的数,时间复杂度:N*logK#include...

2020-02-24 19:49:22 1024

原创 C++ 堆heap

#include <stdio.h>#include <queue>int main(){ //默认构造是最大堆 std::priority_queue<int> big_heap; //最小堆构造方法 std::priority_queue<int, std::vector<int>, std::greater<int&g...

2020-02-24 19:25:01 201

转载 C++ namespace的详细理解

在C++语言编写的程序中,变量和函数等的作用范围是有一定限制的。比如,在函数体中定义的一个临时变量就不可以在函数体外使用。为了解决变量和函数等的作用范围,在C++语言中引入了名空间的概念,并增加了关键字namespace和using在一个名空间中可以定义一组变量和函数,这些变量和函数的作用范围一致,可以将这些...

2020-02-24 19:07:05 338

原创 C++ 写一个简单的计算器

设计一个计算器,输入一个字符串存储的数学表达式,可以计算包括"(",")", “+”, "-"四种符号的数学表达式,输入的数学表达式字符串保证是合法的。输入的数学表达式中可能存在空格字符。#include<string>#include<stack>using namespace std;void compute(std::stack<int>&amp...

2020-02-24 18:43:55 2485

原创 C++ 字符串指针

C++中以下代码错误:char a[]={"Welcome","to","the","world"};char **pa=a;以上代码的错误有两点:定义的数组实际上是“字符串指针数组”,而以上的定义却是“字符数组”,必须把char改为char*。C/C++规定,字面的字符串类型是“常量”,所以,还要再加上const才能初始化为a。正确代码为:const char *a[]={"W...

2020-02-24 11:48:25 540

原创 C++ printf整数与浮点数之间的限制

C++中,整数可以用printf("%f")的形式输出;但浮点型不可以用printf("%d")的形式输出。

2020-02-24 11:18:34 421

转载 C++ 查询变量的类型

#include int iii = 100;printf("%s\n",typeid(iii).name());

2020-02-24 11:13:57 601

转载 char str[]与char *str的区别

                                 &...

2020-02-24 10:08:49 243

原创 C++ 堆_heap

堆的结构并不是树,而是向量vector或者数组array。但有一些特殊的堆是用树的数据结构的。

2020-02-24 00:00:48 96

原创 C++ 将字符串转换为整型 atoi()函数

#include<stdio.h>#include<string>int main(){ int number = 0; std::string s = "12345"; for (int i = 0; i < s.length(); i++) { number = number * 10 + s[i] - '0'; } printf("numb...

2020-02-23 19:53:51 4574

原创 C++ Python 合法的出栈序列

已知从1至n的数字序列,按顺序入栈,每个数字入栈后即可出栈,也可在栈中停留,等待后面的数字入栈出栈后,该数字再出栈,求该数字序列是否合法?#include <stack>#include<queue>bool check_is_valid_order(std::queue<int>& order){ std::stack<int> ...

2020-02-23 17:10:51 756

原创 Visual Studio 2019常用快捷键

功能快捷键格式化文本Ctrl + K+D复制当前行Ctrl +D删除当前行Ctrl + L注释选中区域(有多种版本)Ctrl + K+C取消注释选中区域Ctrl + K+U

2020-02-23 16:41:20 1736

原创 C++ Python 包含min函数的栈

设计一个栈,支持如下操作,push(x), top(), pop(),getMin(): 返回栈内最小元素这些操作的算法复杂度需要是常数级,O(1)1个变量MIN无法完成记录栈中所有状态下的最小值。栈的每个状态,都需要一个变量记录最小值。#include<stdio.h>#include<stack>class MinStack{private: st...

2020-02-23 14:57:34 93

转载 C++ if()括号中写多个条件

C++语言中if()中可以写多个条件&&:并且||:或者!:否定&&优先级高于||比如:if(a>1 && a<100)表示a大于1且小于100;if(a<1 || a>100)表示a小于1或者a大于100;if(a%4 == 0 && a%100 !=0 || a%400 == 0)表a所代表...

2020-02-23 14:44:57 41576 2

原创 使用栈实现队列

设计一个队列,队列支持如下操作,push(x), pop(), empty()peek():返回队列头部元素(即front)这些操作的算法复杂度需要是常数即,O(1)#include<stack>class MyQueue {private: std::stack<int> _data;public: MyQueue() {} void push(in...

2020-02-23 14:10:31 102

原创 使用队列实现栈

设计一个栈,支持如下操作,这些操作的算法复杂度需要是常数级,O(1)。栈的内部存储数据的结构为队列,队列的方法只能包括push, peek(front),pop,size,empty等标准的队列方法。#include<queue>class Mystack {private: std::queue<int> _data;public: Mystack() { }...

2020-02-23 13:36:43 100

原创 算法_stack_queue

栈,stackS.top(): 取出栈顶S.empty(): 判断栈是否为空S.push(x): 将x添加至栈S.pop(): 弹出栈顶S. size(): 栈的存储元素个数#include<stack>#include<stdio.h>int main(){ std::stack<int> S; if (S.empty()) { pr...

2020-02-22 13:06:25 107

原创 C++ 内联函数

内联函数为提高程序运行速度所做的一项改进,只是对编译器的一个建议,编译器可采用也可不采用。与常规函数的区别不在于编写方式,而在于被调用的运行机制不同。编译器使用函数代码替换函数调用。调用常规函数时,通过函数的地址找到函数,并执行函数;调用内联函数时直接将内联函数的代码复制到调用主函数中。使用建议:内联函数一般用在函数代码很简单的情形。如果执行函数代码的时间比处理函数调用机制的时间长,则节省...

2020-02-22 12:16:13 55

原创 C++ 模板函数

//书写模板函数#include <iostream>#include<string>using namespace std;template<typename T> void Sort(T tArray[], int len);template<typename T> void Show(T tArray[], int len);...

2020-02-22 10:41:55 130

空空如也

空空如也

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

TA关注的人

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