自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 剑指 Offer 51. 数组中的逆序对

题目描述:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例 1:输入: [7,5,6,4]输出: 5限制:0 <= 数组长度 <= 50000来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shu-zu-zhong-de-ni-xu-dui-lcof题目链接注释:可以根据之前的归并排序来做这一题,此题就是在归并排序的基础上加上了每次的逆序对数

2020-10-11 23:20:57 124

原创 leetcode 剑指 Offer 51. 数组中的逆序对

题目描述:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例 1:输入: [7,5,6,4]输出: 5限制:0 <= 数组长度 <= 50000来源:力扣(LeetCode)题目链接注释:可参考前面的归并排序,此题就是在归并排序的基础上加上了求每次的逆序对数,用了分治的思想和递归的算法。编程方法:c++class Solution {public:int sum=0;void MergeAn

2020-10-11 23:13:33 127

原创 分治—快速排序

**快速排序**数组排序任务可以如下完成:1)设k=a[0],将k挪到适当位置,使得比k小的元素都在k的左边,比k大的元素都在k的右边,和k相等的,不关心,在k左右出现均可2)把k左边的部分快速排序3)把k右边的部分快速排序编程方法:c++#include <iostream>using namespace std;void swap(int &a,int &b){ int temp=a; a=b; b=temp;}void Q

2020-10-11 17:18:00 1419

原创 分治—归并排序

**归并排序**数组排序任务可以如下完成:1) 把前一半排序2) 把后一半排序3) 把两半归并到一个新的有序数组,然后再拷贝会原数组,排序完成。编程方法:c++#include <iostream>using namespace std;int a[10]={13,27,19,2,8,12,2,8,30,89};int b[10];void Merge(int a[],int s,int m,int e,int tmp[]){ //将数组a的局部a[s,m]和

2020-10-11 15:55:52 116

原创 选择排序

对于一个序列A中的元素A[1]~A[n],令i从1到n枚举,进行n趟操作,每趟从待排序部分[i,n]中选择最小的元素,令其与待排序部分的第一个元素A[i]进行交换,这样元素A[i]就会与当前有序区间[1,i-1]形成新的有序区间[1,i]。于是就在n操作后,所有元素就会使有序的。void selectSort(){ for(int i=1;i<=n;i++){ int k=i; for(int j=i;j<=n;j++){

2020-10-03 18:56:42 49

原创 插入排序

插入排序就是将待插入元素一个个插入初始已有序部分中的过程,而插入位置的选择遵循了使插入后仍保持有序的原则,具体做法一般是从后往前枚举已有序部分来确定插入位置。具体实现:int A[maxn],n; //n为元素个数,数组下标为1——nvoid insertSort(){ for(int i=2;i<n;i++){ int j=i,temp=A[i]; while(j>1&&temp<A[j-1]){

2020-10-03 16:41:24 38

原创 递归放苹果

放苹果 递归法编写方法:c++注释:分情况,当盘子数大于苹果数时,则f(i,k)=f(i,i),当苹果数大于盘子数时,总方法就是有盘子为空的方法+没盘子为空的方法,有盘子为空,则每次是盘子个数减一,苹果数不变,没盘子为空的方法,就是每次使苹果数没次减掉盘子数。边界条件:当苹果数为0,盘子数不为0时,则只有一种方法就是不放,所以return 1,而当盘子数为0,苹果数不为0时,有苹果但时没有盘子可放,所以只能返回0,即return 0。#include <iostream>usin

2020-09-28 15:10:21 104

原创 表达式求值

表达式求值 递归法编程方法:c++注释:首先表达式是一个递归的定义,一个表达式由一个或多个项通过加减符号连接组成,而一个项则是由一个或多个因子通过加减符号组成,一个因子要么是一个数要么是一个由括号括起来的表达式。#include <iostream>#include <cstring>#include <cstdlib>using namespace std;int factor_value();int term_value();int exp

2020-09-27 22:43:48 129

原创 表达式计算

表达式计算 递归法输入为四则运算表达式,仅有数字、+、-、*、/、(、)组成,没有空格,要求求气其值。假设运算符结果都是整数。“/”结果也是整数。编写方法:c++注释:表达式是一个递归定义,如下图,一个表达式由一个或多个项通过加减符号连接组成,而一个项则是由一个或多个因子由加减符号连接组成,而因子则是一个通过括号括起来的表达式或者一个数。通过它们之间的联系可以写出一个相互递归调用的程序。#include <iostream>#include <cstring>#in

2020-09-27 22:33:41 198

原创 leetcode 52.N皇后Ⅱ

N皇后Ⅱn 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给定一个整数 n,返回 n 皇后不同的解决方案的数量。示例:输入: 4输出: 2解释: 4 皇后问题存在如下两个不同的解法。[[".Q…", // 解法 1“…Q”,“Q…”,“…Q.”],["…Q.", // 解法 2“Q…”,“…Q”,“.Q…”]]提示:皇后,是国际象棋中的棋子,意味着国王的妻子。皇后只做一件事,那就是“吃子”。当她遇见可以吃的棋子时,就迅速冲

2020-09-27 20:53:23 83

原创 leetcode 51.N皇后

51. N皇后n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。示例:输入:4输出:[[".Q…", // 解法 1“…Q”,“Q…”,“…Q.”],["…Q.", // 解法 2“Q…”,“…Q”,“.Q…”]]解释: 4 皇后问题存在两个不同的解法。提示:皇

2020-09-27 20:05:15 124

原创 leetcode47 全排列2

47 全排列2给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]来源:力扣(LeetCode)链接:题目链接题解:先参考leetcode46 全排列递归方法的解决。先排序, 针对当前数字与上一个数字相同时,且上一个数字未被使用则跳过,因为在上一个数字作为开始时和当前数字排列会重复。class Solution {public:vector<int> as;vector<

2020-09-24 14:03:08 81

原创 leetcode46 全排列

46全排列给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]来源:力扣(LeetCode)链接:题目链接c++,递归方法题解:利用递归列举所有的元素,刚开始设一个bool型的数组sign并利用函数memset将memset中的所有元素初值设置为false,通过for循环不断列举所有元素找到未使用的原元素并将其添加到动态数组中,如果动态数组的

2020-09-24 12:48:43 106

原创 leetcode70 爬楼梯

leetcode70 爬楼梯假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 + 1 阶来源:力扣(LeetCode)题目链接编程方法:C/C++class Sol

2020-09-22 17:14:37 109

原创 leetcode69 x的平方根

x的平方根实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842…,由于返回类型是整数,小数部分将被舍去。来源:力扣(LeetCode)题目链接编译方式:C/C++class Solution {public: int mySqrt(int x) { long

2020-09-21 11:21:41 64

原创 leetcode58 最后一个单词的长度

最后一个单词的长度题目描述:给定一个仅包含大小写字母和空格 ’ ’ 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。如果不存在最后一个单词,请返回 0 。说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。示例:输入: “Hello World”输出: 5来源:力扣(LeetCode)添加链接描述编译方式:c/c++class Solution {public: int lengthOfLastWord(

2020-09-21 10:43:19 251

原创 leetcode67 二进制求和

leetcode67.二进制求和给你两个二进制字符串,返回它们的和(用二进制表示)。输入为 非空 字符串且只包含数字 1 和 0。示例 1:输入: a = “11”, b = “1”输出: “100”示例 2:输入: a = “1010”, b = “1011”输出: “10101”提示:每个字符串仅由字符 ‘0’ 或 ‘1’ 组成。1 <= a.length, b.length <= 10^4字符串如果不是 “0” ,就都不含前导零。来源:力扣(LeetCode)链

2020-09-21 10:04:31 142

原创 获取字符串、字符数组的长度

在C/C++中常用的获取字符串长度或者字符串数组长度的函数有sizeof()length()strlen()size()其中strlen(str)和str.length()和str.size()都可以用来求字符串的长度 。str.length()和str.size()是用于求string类对象的成员函数strlen(str) 是用于求字符串数组的长度,其参数是char*辨析strl...

2020-05-07 15:57:34 3483

原创 大整数的加法

算法笔记c++编译大整数又称为高精度整数,含义就是用基本数据类型无法存储其精度的整数,所以需要一个整数数组来存储大整数的每一位数字。这里使用了结构体来存储一个大整数,int型数组d来存储大整数的而每一位数字,int型len来记录大整数的长度,使用结构体的构造函数bign(),当定义结构体之后,就会直接进行初始化。#include <iostream>#include <...

2020-05-07 15:50:58 201

原创 PAT A1059 Prime Factors

c++编译算法笔记注释:(1)枚举1~sqrt(n)范围内所有质因子p,判断p是否是n的因子。如果p是n的因子,那么给fac数组中增加质因子p,并初始化其个数为0,然后只要p还是n的因子,就让n不断除以p,每次操作令p的个数加1,直到p不在是n的因子为止。(2)如果p不是n的因子,直接跳过。如果在上面步骤结束后n仍然大于1,说明n有且仅有一个大于sqrt(n)的质因子(有可能是n本身),这...

2020-05-07 13:58:39 147

原创 PAT 1013数素数 c++

c++编译#include <iostream>#include <stdio.h>#include <math.h>using namespace std;const int maxn=1000001;int prime[maxn];int num=0;bool isPrime(int n){ int s=(int)sqrt(1.0*...

2020-05-06 18:30:07 109

原创 code3788 分数加减法

c++编译#include <iostream>#include <stdio.h>#include <stdlib.h>using namespace std;struct Fraction{ int up,down;};int gcd(int a,int b){ while(b!=0){ int r=b; ...

2020-05-06 17:23:53 457

原创 codeup 2135最小公倍数 c++

c++编译#include <iostream>#include <stdio.h>using namespace std;int gcd(int a,int b){ if(b==0) return a; else return gcd(b,a%b); }int main(){ int a,b; while(scanf...

2020-05-06 13:35:54 136

原创 codeup最大公约数

c++编译#include <iostream>#include <stdio.h>using namespace std;int gcd(int a,int b){ if(b==0) return a; else return gcd(b,a%b); }int main(){ int a,b; while(scanf...

2020-05-06 13:27:56 86

原创 PAT 数字黑洞 c++编译

PAT 数字黑洞给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的 6174,这个神奇的数字也叫 Kaprekar 常数。例如,我们从6767开始,将得到7766 - 6677 = 10899810 - 0189 = 9621962...

2020-05-06 13:15:13 289

空空如也

空空如也

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

TA关注的人

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