- 博客(24)
- 收藏
- 关注
原创 leet136.只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。栈class Solution {public: int singleNumber(vector<int>& nums) { stack<int> mystack; sort(nums.begin(),nums.end()); for(int i=0;i<nums.size();i++) {
2021-04-26 14:22:49
90
原创 leetcode104.二叉树最大深度
bool isSymmetric(TreeNode* root) { return check(root,root); } bool check(TreeNode *r,TreeNode *l) { if(!r||!l) return false; if(!r&&!l) return true; return check(r.left,l.right)&&ch
2021-04-26 09:50:44
99
原创 leetcode70.爬楼梯
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。动态规划爬到第n层的方法是爬到第n-1和n-2的方法的和;class Solution {public: int climbStairs(int n) { int l1,l2=1,l3=1; for(int i=1;i<n;i++) { l1=l2;
2021-04-19 17:39:03
97
原创 for (auto x : nums)
class Solution {public: int findDuplicate(vector<int>& nums) { int n = nums.size() - 1; int l = 1, r = n; while (l < r){ int mid = l + r >> 1; int cnt = 0; for (auto x : nums)
2021-04-15 16:39:35
4294
原创 leetcode.最大子序和
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。贪心算法设置一个i之前的i-1个元素和sum和最大值ma,如果之前和大于0,那么证明之前的序列为有用序列,把它加到上面,如果之前和小于0,那么证明为无用序列,则放弃之前的序列,从新开始寻找序列。class Solution {public: int maxSubArray(vector<int>& nums) { int ma=nums[0];
2021-04-15 16:35:08
64
原创 leetcode21.合并两个有序链表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。递归方法/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} *
2021-04-15 11:02:26
43
原创 成绩排序
用一维数组存储学号和成绩,然后,按成绩排序输出。题目地址#include<iostream>#include<vector>#include<algorithm>using namespace std;struct student{ int num; int score;};bool cmp(const student a,const student b){ if(a.score<b.score) retu
2021-04-12 17:41:19
70
原创 叠筐
#include<cstdio>#include<iostream>using namespace std;int main(){ int length; char outside,inside; while(cin>>length>>inside>>outside) { char s[length-1][length-1]; for(int i=0;i<=(length
2021-03-29 10:29:01
84
原创 c++实现反序输出字符串
普通字符串#include<cstdio>#include<iostream>using namespace std;int main(){ string s; while(cin>>s){ for(int i=s.size()-1;i>=0;i--) { cout<<s[i]; } cout<<endl; } }含
2021-03-27 10:53:40
3003
1
原创 string的相关用法[c++]
string和char数组,char*之间的转换sting转为char数组:string str1 = "ABCDEFG";char a[20];strcpy(a,str1.c_str());//用到 c_str()函数string转为char*//char * 可以转string,直接赋值即可。不能单独赋int和c字符类型值。 string s1("demo1"); string s1 = "demo"; char *p = "demo"; s1 = p; string转char
2021-03-27 10:52:48
97
原创 getline函数的用法
此函数可读取整行,包括前导和嵌入的空格,并将其存储在字符串对象中。getline 函数如下所示:getline(cin, inputLine);而getline(cin,s,’>’)表示当遇到输入>的时候输入终止。
2021-03-27 10:42:28
481
原创 c/c++判断输入结束
在c语言中:while(scanf("%d",&h)!=EOF)但在c++中,只需要while(cin>>h)即可,不管是文件末尾,还是 Ctrl+Z 或者 Ctrl+D,它们都是结束标志;cin 在正常读取时返回 true,遇到结束标志时返回 false,我们可以根据 cin 的返回值来判断是否读取结束。...
2021-03-26 11:09:19
1774
原创 后缀子串排序
对于一个字符串,将其后缀子串进行排序,例如grain 其子串有: grain rain ain in n 然后对各子串按字典顺序排序,即: ain,grain,in,n,rain#include<iostream>#include<cstdio>#include<string>#include<vector>#include<algorithm>using namespace std;int main(){ string s
2021-03-25 16:01:06
178
原创 sort函数的用法[c++]
sort函数包含在头文件为 #include< algorithm>sort()基本使用方法sort()函数可以对给定区间所有元素进行排序。它有三个参数sort(begin, end, cmp),其中begin为指向待sort()的数组的第一个元素的指针,end为指向待sort()的数组的最后一个元素的下一个位置的指针,cmp参数为排序准则,cmp参数可以不写,如果不写的话,默认从小到大进行排序。如果我们想从大到小排序可以将cmp参数写为greater< int>()就是对int
2021-03-25 15:59:18
230
原创 vector容器的相关用法[c++]
vector数据结构和数组非常相似,也称为单端数组v.begin()返回迭代器,这个迭代器指向容器中第一个数据 v.end()返回迭代器,这个迭代器指向容器元素的最后一个元素的下一个位置遍历:方法一:for (vector<int>::iterator it = v.begin(); it != v.end(); it++) { cout << *it << " "; }方法二:for(int i=0;i<v.size();i++)
2021-03-25 15:38:12
78
原创 String的相关用法[c++]
#include< string >string子串功能描述:从字符串中获取想要的子串string substr(int a, int b) const; //返回由pos开始的n个字符组成的字符串注意并非是从a到b,而是从a开始长度为b的子串//子串void test01(){string str = "abcdefg"; string subStr = str.substr(1, 3); cout << "subStr = " << sub
2021-03-25 15:12:45
87
原创 leetcode141. 环形链表
给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。进阶:你能用 O(1)(即,常量)内存解决此问题吗?方法一:利用hash表,遍历链表,如果哈希表中没有当前节点
2021-03-24 11:03:34
98
原创 [c++]unordered_set
1、unordered_set的介绍1、无序集是一种容器,它以不特定的顺序存储惟一的元素,并允许根据元素的值快速检索单个元素。2、在unordered_set中,元素的值同时是唯一标识它的键。键是不可变的,只可增删,不可修改3、在内部,unordered_set中的元素没有按照任何特定的顺序排序,而是根据它们的散列值组织成桶,从而允许通过它们的值直接快速访问单个元素(平均时间复杂度为常数)。 4、unordered_set容器比set容器更快地通过它们的键访问单个元素,尽管它们在元素子集的范围迭代中
2021-03-24 11:02:13
621
原创 leetcode20. 有效的括号
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。class Solution {public: bool isValid(string s) { stack <char> sta; unordered_map<char,char>map= { {')','('},
2021-03-23 10:31:35
99
原创 leetcode191. 位1的个数
编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。方法一:逐位检查将二进制数的每一位分别与2^i相&:class Solution {public: int hammingWeight(uint32_t n) { int ret = 0; for (int i = 0; i < 32; i++) { if (n & (1 << i
2021-03-22 13:20:49
81
原创 leetcode7.整数反转
类似题目:给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。关键点:溢出判断假设有1147483649这个数字,它是小于最大的32位整数2147483647的,但是将这个数字反转过来后就变成了9463847411,这就比最大的32位整数还要大了,这样的数字是没法存到int里面的,所以肯定要返回0(溢出了)。甚至,我们还需要
2021-03-17 10:33:48
163
原创 leetcode665.非递减数列
给你一个长度为 n 的整数数组,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列。我们是这样定义一个非递减数列的: 对于数组中任意的 i (0 <= i <= n-2),总满足 nums[i] <= nums[i + 1]。class Solution {public: bool checkPossibility(vector<int>& nums) { int count=0; for(int i=
2021-03-16 16:08:41
161
原创 leetcode1.两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。//暴力解法class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { int i,j; for(i=0;i&
2021-03-16 13:08:58
90
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人