- 博客(94)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
原创 leetcode之最长有效括号
题目描述给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。示例 1:输入: “(()”输出: 2解释: 最长有效括号子串为 “()”示例 2:输入: “)()())”输出: 4解释: 最长有效括号子串为 “()()”题目分析当字符串为‘(’dp[i]为0,当s[i]=’)‘时,具体讨论:首先判断前一个字符串匹配是否越界即if(i-1-dp[i-1]>=0),在判断s[i-1]=’(’;例如:当i=3时,s[3]=’)’,s[2]=’(’;dp
2020-05-14 22:14:55
247
原创 leetcode之搜索旋转排序数组
题目描述假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5,6,7,0,1,2], target = 0输出: 4示例 2:输入: nums = [4,5,6,7,0,1,2], targ
2020-05-14 01:07:34
101
原创 leetcode之下一个排列
**题目描述**实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1题目分析解题思路很简单,直接举例说明:比如6 1 2 4 3 0,它的下一个排列应为 6 1 3 0 2 4可以看出规律:数组从后向前遍历,
2020-05-13 16:35:24
170
原创 leetcode之括号生成
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n = 3输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]题解:仍然是回溯法的题目,回溯法的题目可以看看这个文章:添加链接描述判断回溯很简单,拿到一个问题,你感觉如果不穷举一下就没法知道答案,那就可以开始回溯了。一般回...
2020-05-07 00:40:17
314
原创 leetcode之合并两个链表
将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4题目解析:首先,我们设定一个哨兵节点 prehead ,这可以在最后让我们比较容易地返回合并后的链表。我们维护一个 cur指针,我们需要做的是调整它的 next ...
2020-05-06 21:04:11
260
原创 leetcode之删除链表的倒数第N个结点
示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?采取双重遍历肯定是可以解决问题的,但题目要求我们一次遍历解决问题,那我们的思路得发散一下。我们可以设想假设设定了双指针 p 和 q 的话,当 q 指...
2020-05-05 16:37:22
139
原创 leetcode之四数之和
给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为:[[...
2020-05-03 16:01:10
161
原创 leetcode之最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。取每个容器中的字符串,把每个字符串的子串进行比较。c...
2020-04-30 14:34:50
104
原创 leetcode整数转罗马数
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12...
2020-04-29 17:41:47
184
1
原创 leetcode7之支付穿转换整数(atoi)
请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在有效的整数部分之后也可能会存在多余...
2020-04-25 18:16:28
140
原创 leetcode之整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321 示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。class Sol...
2020-04-25 11:24:00
116
原创 leetcode最长回文数
首先想到的就是最笨的方法,暴力搜索,但是好像通过不了,超出时间限制,看了别人的代码,才知道大神真的是太多太多。class Solution {public: string longestPalindrome(string s) { string res="";//存放结果 string temp="";//存放子串 for(int i=0...
2020-04-20 20:54:02
501
1
原创 无重复字符串的最大长度
题目给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke...
2020-04-11 23:12:42
833
原创 企业链表
企业链表即传统链表的改造,把每个链表的结点指针相连接在一起LinkList.h头文件定义一些链表常用的API#ifndef LINKLIST_H#define LINKLIST_Htypedef struct LINKNODE{ struct LINKNODE* next;}LinkNode;typedef struct LINKLIST{ LinkNode head; ...
2020-04-06 23:43:19
304
3
原创 队列的顺序存储
SeqQueue.h头文件 定义队列一些常用API函数#ifndef SEQQUEUE_H#define SEQQUEUE_H#define MAX_SIZE 1024typedef struct SEQQUEUE{ void* data[MAX_SIZE]; int size;}SeqQueue;//初始化SeqQueue* Init_SeqQueue();//入队vo...
2020-03-28 01:24:51
113
原创 链式栈结构的入栈,出栈,返回栈顶元素,清空栈等等
只把学习的代码与各位分享一下:定义头文件LinkStack.h#ifndef LINKSTACK_H#define LINKSTACK_H//链式结点typedef struct LINKNODE{ struct LINKNODE* next;}LinkNode;//链式栈typedef struct LINKSTACK{ LinkNode head; int size;...
2020-03-27 03:06:02
1997
1
原创 二叉树的#号创建
代码:#include<stdio.h>#include<stdlib.h>#include<string>#include<iostream>//准备数据struct BiNode{ char ch; BiNode* lchild,*rchild;};//递归遍历void Recusion(BiNode* root){ ...
2020-03-24 22:40:33
283
原创 函数适配器
1.初识函数适配器1)使用bind2nd进行绑定2)需要继承 public binary_function<参数类型1,参数类型2,返回值类型>3)使用const修饰operator()class myPrint:public binary_function<int,int,void>{public: void operator()(int val,int s...
2020-03-21 21:53:52
220
原创 STL-multimap容器示例
题目要求://公司今天招聘5个员工,5名员工进入公司之后,需要指派员工在那个部门工作人员信息有:姓名,年龄,电话和工资等组成,通过multimap进行信息的插入保存和显示分部门显示员工信息。#include<iostream>#include<map>#include<string>#include<vector>#include<s...
2020-03-20 20:48:00
124
原创 STL一些常用容器的特点
0.vector:link1.deque:link2.stack:先进后出,遍历不提供迭代器,也不支持随机访问不能遍历,只能通过从栈顶弹出元素linkstack<int>s1;while(!s1.empty()){ cout<<s1.top()<<" "; s1.pop();}cout<<endl;3.queue队列先进先出,...
2020-03-18 21:35:57
351
原创 STL之set容器和pair容器
具体关于set容器和pair容器的理论自行查询度娘即可,以下代码仅仅是一些关于set和pair容器一些简单的API操作。#include<iostream>#include<set>#include<string>using namespace std;void test01(){ set<int>s1; s1.insert(7)...
2020-03-18 20:40:38
398
原创 C++示例(评委给学生打分)
题目要求:要求有五名学生,共计十个评委给每位学生打分,积分规则为,去除打分中的最高分和最低分,其余分数求平均,然后按分数高低排名。#include<iostream>#include<vector>#include<string>#include<deque>#include<algorithm>using namespace...
2020-03-15 20:29:46
1783
原创 矩阵相乘
对于给定的m X n矩阵A和n X k矩阵B,得到矩阵C(m X k)其乘积的矩阵可以用以下代码表示:void MatrixMul(double *A,double *B,int m,int n,int k,double *C){ int i,j,l,u; for(i=0;i<m;i++) { for(j=0;j<k;j++) { u=i*k+j;//矩...
2020-03-08 23:00:51
178
原创 小甲鱼-虚继承
虚继承是解决C++多重继承问题的一种手段,从不同途径继承来的同一基类,会在子类中存在多份拷贝。这将存在两个问题:其一,浪费存储空间;第二,存在二义性问题,通常可以将派生类对象的地址赋值给基类对象,实现的具体方式是,将基类指针指向继承类(继承类有基类的拷贝)中的基类对象的地址,但是多重继承可能存在一个基类的多份拷贝,这就出现了二义性。虚继承主要解决多继承中出现变量访问不明确的问题;在一般的多重...
2020-03-07 02:12:03
353
原创 任意随机数以及正态分布随机数的产生
#include<stdio.h>double Rand01(double *r){ double base,u,v,p,temp1,temp2,temp3; base=256.0; u=999.0; v=199.0; temp1=u*(*r)+v; temp2=(int)(temp1/base); temp3=temp1-temp2*base; *r=temp...
2020-03-03 22:51:41
1040
原创 运算符的重载
运算符+号重载例子:计算复数相加,当运算符重载之后,在调用该运算符时自动调用该函数。(这句话理解了,代码就容易懂了)#include <iostream>using namespace std;class F{public: int operator() (int a, int b) { return a*a + b*b; }}; class F2{pu...
2020-03-03 00:09:05
187
2
原创 多项式计算
一维多项式求值:一个通用的计算式多项式的值的算法可以采用递推的方式。首先可以将多项式变形为如下等价形式:P(x)=(…((a1x+a2)x+c)x+d)x+…an-1)x+an依照这个思路来编写一维多项式求解过程:double polynomiallD(double *a,int n,double x)//n为多项式的系数,x为指定的变量值,a存放的是多项式的n个系数{ int i;...
2020-03-01 23:35:31
3266
原创 查找算法:折半查找
折半查找(Binary Search)又称为二分查找,要求数据序列呈线性结构,也就是经过排序的。对于没有排序算法进行预排序,然后执行折半查找算法。首先需要设三个变量low、mid、high,分别保存数组元素的开始,中间和末尾的序号。根据以上算法步骤,可以编写相应的折半查找算法,示例代码如下:int SearchFun(int *a,int n,int target){ int low...
2020-02-29 23:18:45
531
原创 查找算法:顺序查找
顺序查找的算法的程序代码很简单,在c语言中只需要编写一个循环,将数组中各元素依次与待查找的目标数进行比较即可。顺序查找算法的示例代码如下:#include<stdio.h>#include<stdlib.h>#include<time.h>#define N 15int SearchFun(int *a,int n,int target)//a为序列数...
2020-02-28 19:41:10
585
原创 虚函数的应用
使用说明:1.可在任何方法上添加virtual,例:virtual void play();2.继承性:一旦基类中为虚函数,子类将不会为非虚函数3.优缺性:声明虚方法除了使程序慢一点点以外,没有任何缺点因为当我们使用基类的引用或指针调用基类中定义的某个函数时,我们并不知道该函数真正的对象是什么类型(属于哪个类),因为它可能是一个基类的对象,也可能是一个子类的对象下面对一个例子进行举例:...
2020-02-28 00:51:42
583
原创 字符串数组的快速排序
#include<include.h>#include<stdlib.h>#include<time.h>#define N 5void QuickSort(char* [],int left,int right){ int l,r; char *f,*t; l=left; r=right; f=[(left+right)/2];//取中值为...
2020-02-26 13:46:20
493
原创 反序排列
反序排列就是从大到小的顺序对数组进行排序,反序排列实现起来十分方便,只需对一般排序算法稍加修改即可。以插入算法为例,按从大到小的反序插入排序算法进行排序。代码如下:void InsertionSort(int* a,int len){ int i,j,t,h; for(i=1;i<len;i++) { t=a[i];//待插入的数据 j=i-1;//准备插入的位置 w...
2020-02-24 19:19:01
1208
原创 堆排序法
就是不断维护一个大根堆,让每个结点都不小于其子节点,此时根节点必然是所有数字中最大的。然后,我们只需要将第一个与最后一个数字交换位置,就可将最大的数移动到数组的最后,然后再将数组前n-1个元素继续维护成大根堆,再将根节点与第n-1个元素交换位置,此时第n-1与第n个元素都已经按照升序排好了。我们只需要不断重复上述步骤,直到所有元素按照升序排好。void adjust(int a[],int i,...
2020-02-20 20:20:02
172
原创 C++华氏温度和摄氏温度的转换
#include<iostream>using namespace std;void convertTemperture(double tempIn,char typeIn);int main(){ double tempIn; char typeIn; cout<<"请以[xx.x C]或[xx.x F]的形式输入温度:"; cin>>te...
2020-02-19 01:02:04
8018
原创 C++快速排序
#include<iostream>using namespace std;void quickSort(int a[],int,int);int main(){ int array[]={34,65,12,43,67,5,78,10,3,70},k; int len=sizeof(array)/sizeof(int); cout<<"The orginal...
2020-02-18 22:57:57
126
原创 Shell排序算法
Shell排序算法严格来说是基于插入思想,又称为希尔排序或缩小增量排序。Shell排序算法的排序流程如下:(1)将有n个元素的数组分成n/2个数字序列,第1个数据和第n/2+1个数据为一对,等等,以此类推。(2)一次循环使每一个序列对排好顺序。(3)变为n/4个序列,再次排序。(4)不断重复上述过程,随之序列减少直至最后变为1个,完成整个排序。void ShellSort(int *a,...
2020-02-18 21:46:23
967
原创 选择排序算法and插入排序法
选择排序通过选择和交换来实现排序,其排序基本流程如下:(1)首先从原始数组中选择最小的数据,将其和位于第一个位置的数据交换。(2)从剩下的n-1各数据中选择次小的一个元素,将其和位于第二个位置的数据交换。(3)这样不断重读,直到最后两个数据完成交换。最后,完成对原始数组从小到大的排序。void SelectionSort(int* a,int len){ int i,j,k,h; i...
2020-02-17 21:21:48
184
原创 冒泡排序法
冒泡排序算法通过多次比较和交换来实现排序,其排序流程如下:(1)对数组中的各数据,依次比较相邻的两个元素大小。(2)如果前面的数据大于后面的数据,就交换这两个的数据。经过第一轮的多次比较排序之后,便可把最小的数据排好。(3)再用同样的方法把剩下的数据逐个进行比较,最后便可按照从小到大的顺序排好数组中各数据的顺序。void BubbleSort(int *a,int len){ int ...
2020-02-16 22:13:59
145
原创 蒙特卡罗算法计算圆周率π
(1)均匀撒点:在C语言中可以使用随机函数来实现,产生【0,1】之间的随机坐标【x,y】。(2)区域判断:图中阴影部分的特点是距离坐标原点的距离小于等于1,这样,可以通过计算判断x2+y2<=1来实现。#include<stdio.h>#include<time.h>#include<stdlib.h>double MontePI(int n)...
2020-02-16 20:21:47
878
1
原创 关于ungetc(ch,stdin)用法
要求用户输入一串整数和任意数目的空格,这些整数必须位于同一行中,但允许出现该行中任一位置。当用户按enter键时退出程序。程序自动对输入的数字进行求和。#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>int main(){ int i = 0; int sum = 0;...
2020-02-15 23:32:49
1542
HM代码在深度学习应用调试过程中出现如下的问题,有人遇到过吗??
2019-08-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅