c++
糖FZ+L耗
一个在软硬件都徘徊却学不会的小咸鱼
展开
-
打卡算法十一
124.二叉树最大路径和力扣最优路径可以从两个地方得到,一个是经过根节点时,左子树最优+右子树最优+根节点;另一个是转化为子问题,将左右子树分别作为根节点来求解;难点在于递归的返回值和答案之间的关系;关于此类问题,一般是开一个全局变量来存储和更新答案;dfs只返回需要的值;在本题中,需要dfs返回的是该子树和根节点相连情况下的单条路径最优值;在计算过程中,更新答案为左右两边单条路径最优解+根节点组合为满足要求的路径;/** * Definition for a binary.原创 2022-04-19 02:57:50 · 268 阅读 · 2 评论 -
算法打卡十
1748.唯一元素的和唯一元素的和 - 力扣(LeetCode) (leetcode-cn.com)这道题也可以用哈希,但我用类似哈希的数组实现(实质也是哈希思想)这个有计数法的技巧:计数法的含义顾名思义,就是利用一个变量,记录下某个数值出现了多少次。从而实现对数值的计数。在这里,我们可以采用一个计数数组来完成这件事情。将nums数组的值 映射到 计数数组 的下标中,而数组值本身就对应了计数器的值。int sumOfUnique(int* nums, int numsSize.原创 2022-04-17 19:42:55 · 375 阅读 · 1 评论 -
算法打卡九
832.翻转图像832. 翻转图像 - 力扣(LeetCode) (leetcode-cn.com)这道题:我的思路很简单:它是需要2进制图像,那我可以异或,也可以直接用 1去解决(去取反嘛,我 1 - 1 =0(就实现了如果数组里边存储的是1,取反后就是0); 1 - 0 =1 (实现了数组里边存的是0,取反是1)然后,逆序其实如果你这么看: mage...原创 2022-04-16 22:12:13 · 462 阅读 · 0 评论 -
每日打卡算法九
算法打卡九链接:link64.求1 + 2 + 3 + 4+…+n这道题:可以说是诸神乱战,天神秀操作的题本质上他是经典问题出新意,加了许多限制条件class Solution { public: int sumNums(int n) { return n == 0 ? 0 : n +sumNums(n-1); //这道题,我用递归操作,三目运算符 } };大神题解:class Solution { public: int sumNums(int n) { return sizeof(bool原创 2022-04-15 20:13:45 · 345 阅读 · 1 评论 -
每日打卡八
509斐波那数列. 斐波那契数 - 力扣(LeetCode) (leetcode-cn.com)class Solution {//模板题: 用for遍历数组,注意数列的边界条件,然后以数列递推公式直接干public: int fib(int n) { int fib[31]; fib[0] = 0 , fib[1] = 1; for(int i = 2;i <= n; ++i) { fib[i] = fib[i - 1] + .原创 2022-04-14 19:08:46 · 325 阅读 · 0 评论 -
算法打卡第七天
231.2的幂https://leetcode-cn.com/problems/power-of-two///这种方法是关于幂的通解 暴力模拟class Solution {public: bool isPowerOfTwo(int n) { while(n && n %2 ==0) { n /=2; } return n == 1; }};/*位运算解法:判断奇...原创 2022-04-13 20:21:24 · 535 阅读 · 3 评论 -
算法打卡6
2042.检查句子中的数字是否递增力扣原创 2022-04-12 03:56:44 · 357 阅读 · 0 评论 -
每日打卡6
2032.至少在两个数组中出现的值力扣简单题,读题,然后暴力模拟就行int* twoOutOfThree(int* nums1, int nums1Size, int* nums2, int nums2Size, int* nums3, int nums3Size, int* returnSize){ int *ret = (int *)malloc( sizeof(int) * 300 );//三个数组每个数组100长度,那么一共300 int i, j; int原创 2022-04-08 21:48:36 · 273 阅读 · 1 评论 -
每日打卡五
2043.简易银行系统日常生活知识,值得练基本功class Bank { //定义一个银行 vector<long long> b;public: Bank(vector<long long>& balance) { b.clear(); b.push_back(-1); //日常初始化 //存入账户 for(int i=0;i < balance.siz原创 2022-04-07 11:02:52 · 336 阅读 · 1 评论 -
每日打卡算法(4)
2047.句子中有效单词数力扣思路:暴力枚举各个思路,直接干class Solution { // bool isNumeric(char c) { return c >= '0' && c <= '9'; } bool isSpace(char c) { return c == ' '; } bool isCombine(char c) { return c =原创 2022-04-06 19:44:50 · 422 阅读 · 0 评论 -
每日打卡算法
2057. 值相等的最小索引力扣int smallestEqual(int* nums, int numsSize){ int i; for(i=0;i < numsSize ;++i) { if( i % 10 == nums[i] ) return i; } return -1;}2064.分配给商店的最多商品 的最小值力扣思路:“我希望x越小越好,即我 想最小化分配给任意商店...原创 2022-04-05 10:21:59 · 1111 阅读 · 0 评论 -
每日算法打卡二
队列力扣【2073. 买票需要的时间 】typedef struct{ int index; int need;}Q;int timeRequiredToBuy(int* tickets, int ticketsSize, int k){ Q q[50000] , temp ; int i; int time = 0; int front = 0 , rear = 0; //存储票 for(i=0; i <原创 2022-04-04 19:43:29 · 270 阅读 · 0 评论 -
学习算法打卡(一)
滚动数组是动态规划中的一种思想,用固定的几个空间去迭代寻找解,以起到压缩空间的效果。当然,他也因此牺牲了时间上的效率。滚动数组详解_哔哩哔哩_bilibili一维的滚动数组,说白了DP题目是一个自底向上的扩展过程,我们只需要的是最终的结果的话,对过程的连续的解不需要的话,滚动数组优化是很有效的。利用滚动数组的话在N很大的情况下可以达到压缩存储的作用。是 也是优化版本的斐波那数列的操作。比如说在这我们就可以拿斐波那数列来举例子,这里我们只需要开辟dp[0] 、 dp[1]、...原创 2022-04-03 14:19:07 · 623 阅读 · 0 评论 -
回溯算法基础一
理论基础回溯,其实是递归的“副产品”。有递归就会有相应的回溯过程。而回溯的本质是穷举,所以他并不是高效的算法。它可以理解为树形结构。他解决问题的操作是在集合中递归寻找子集。而集合的大小就是构成树的宽度,递归的深度构成了树的深度。回溯法可以解决的问题: 1.组合问题 2.切割问题 3.子集问题 ...原创 2022-03-30 20:47:24 · 329 阅读 · 1 评论 -
字符串专题二
找出数组中的第一个回文字符串力扣学习博客: xLeetCode 2108. 找出数组中的第一个回文字符串_回文字符串的判定为了减少时间的复杂度: 用类似二分的思想: 第一个 和 最 后 一 个 字母判断; 第二个 和 倒数第二个 字母判断是否相等...... 通过枚举字符串的一半来判断,一旦不相等即不是回文。bo...原创 2022-03-30 17:23:48 · 171 阅读 · 0 评论 -
字符串专题___简单基础篇
力扣反转字符串 (简单题)class Solution {public: //双指针法,参考反转链表思想 void reverseString(vector<char>& s) { for(int i=0,j = s.size() - 1;i < s.size()/2 ;i++,j--) { swap(s[i],s[j]); } }};力扣...原创 2022-03-27 10:52:10 · 1263 阅读 · 1 评论 -
树的专题三
树的最大深度104. 二叉树的最大深度 - 力扣(LeetCode) (leetcode-cn.com)/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * Tre.原创 2022-03-26 11:06:29 · 1112 阅读 · 0 评论 -
算法学习五
寻找峰值力扣x的平方根力扣这道题的思路什么呢: 即 这便是题解的一个边界判断条件 那么我们怎么去寻找y呢?可以考虑二分查找二分查找 的下界为 0 ,上界可以粗略地设定为x 。在二分查找的每一步中,我们只需要比较中间元素mid 的平方与x的大小关系,并通过比较的结果调整上下界的范围。由于我们所有的运算都是整数运算,不会存在误差。。209. 长度...原创 2022-03-26 22:01:55 · 874 阅读 · 2 评论 -
leetcode简单题
力扣得到零的操作数(递归)class Solution {//(1) 如果num1或者num2本身就是0的情況,直接返回0 ;// (2) 否则,把两者中小的那个叫min,大的那个叫max ,// 那么返回的应该是递归调用 max-min和min的情况 。public: int countOperations(int num1, int num2) { //若X是“0”(为假),则“!x”就不是零(为真), //则里面为真,进入if下的大{}.原创 2022-03-21 19:49:12 · 532 阅读 · 0 评论 -
树的练习2
二叉树的层序遍历力扣/** *这道题的思路在于:* 二叉树的层序遍历是: 根 左 右 一层一层往下遍历* 我们需要借助一个辅助的数据结构——队列来实现这个目的* 为什么呢?因为队列先入先出刚好符合我们 一层一层往下遍历的需求* 所以的操作流程大概是: 根节点 询问根节点的左孩子 再询问根节点的右孩子* 一层遍历完,接下来访问根节点左孩子的左孩子,再访问它的右孩子......**原创 2022-03-20 23:29:46 · 317 阅读 · 0 评论 -
三月算法(三)-----树的习题(1)
二叉树创建字符串606. 根据二叉树创建字符串 - 力扣(LeetCode) (leetcode-cn.com)class Solution {public: // 这道题我的思路是 看题: 如果是 左右子树都存在的话,自然是都是有括号(字符)(字符) // 但:如果左节点不存在: 就是 ()( 字符 ) // 右节点不存在,就是 ( 字符 ) string tree2str(TreeNode* root) { if(ro原创 2022-03-19 23:25:18 · 345 阅读 · 0 评论 -
三月算法(二)
力扣有效字母的异位词class Solution { //使用哈希表,对字符串的字母进行投影 // a b c ..... // 0 1 2 // 投影完后,所采用的的就是ASCI码,字母相同就相约(一个++,另一个--) // 最后为零就是说明两个字符串当中的会存在某个字母出现次数相同,即符合要求public: bool isAnagram(string s, string t) { int record[26]=.原创 2022-03-18 23:02:21 · 421 阅读 · 0 评论 -
cpp正则表达式
#include <iostream>#include<regex>#include<string>using namespace std;int main(){ regex reg("(\\d)([A-Z])\\1\\2"); // \\d代表子集,匹配一个数字 \\1代表这个子集的重复项 连起来是匹配两个数字 // 也就是说 (\\d)\\1 等价于 (\\d)(\\d) \n就是前面匹配到的字模块(子集)的重复项 .原创 2022-02-24 20:40:09 · 741 阅读 · 1 评论 -
c++时间流学习笔记(三)
#include<chrono>#include <iostream>#include<thread>using namespace std;/* duration_cast: chrono一个模板函数,但不属于duration类 浮点数和整数之间的转换可以直接隐式转换,但其他情况就需要使用duration_cast这个函数来转换 time_point_cast:chrono的一个模板函数,不属于time_point类.不同的时间点的内部周期.原创 2022-02-09 16:39:29 · 786 阅读 · 0 评论 -
时间流cpp学习笔记(二)
c++的时钟// cpp时钟study.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。#include<chrono>#include <iostream>#include<ctime>#include<iomanip>using namespace std;/** clock都有的静态成员函数:* static time_point now() //get current time* s原创 2022-02-08 21:06:18 · 316 阅读 · 0 评论 -
时间流c++学习笔记(1)
#include <iostream>#include<chrono>using namespace std;/*/** duration类:表示的是一段时间间隔,用来记录时间的长度,可以表示几秒几分几时* ratio<1>一秒* ratio<60>一分* ratio<60*60>一时 而在此,我们可以知道这不过是一种缺省的方式使用,其实正规应该是<_,_>* .原创 2022-02-07 15:50:37 · 279 阅读 · 0 评论 -
算法基础(二)
本节是关于二分查找的学习蒜头君手上有个长度为nn的数组AA。由于数组实在太大了,所以蒜头君也不知道数组里面有什么数字,所以蒜头君会经常询问整数xx是否在数组AA中。输入格式第一行输入两个整数nn和mm,分别表示数组的长度和查询的次数。接下来一行有nn个整数a_iai。接下来mm行,每行有11个整数xx,表示蒜头君询问的整数。输出格式对于每次查询,如果可以找到,输出"YES",否则输出"NO"。数据范围1 \le n, m \le 1...原创 2022-02-06 15:36:43 · 557 阅读 · 0 评论 -
复习算法基础(一)
/*呜呜呜我要逼自己打代码,不能再偷懒了呜呜呜*/快速排序快速排序时间复杂度快速排序的时间复杂度在最坏情况下是O(N2),平均的时间复杂度是O(N*lgN)。这句话很好理解:假设被排序的数列中有N个数。遍历一次的时间复杂度是O(N),需要遍历多少次呢?至少lg(N+1)次,最多N次。(01) 为什么最少是lg(N+1)次?快速排序是采用的分治法进行遍历的,我们将它看作一棵二叉树,它需要遍历的次数就是二叉树的深度,而根据完全二叉树的定义,它的深度至少是lg(N+1)。因此,快速排序的遍历次数最少是lg原创 2022-01-27 20:34:12 · 868 阅读 · 1 评论 -
寻找面试题
C语言的结构体和C++的有什么区别c的结构体是不能有成员函数的,c++的类可以有C语言的的结构体中没有private、public、protected限制访问。而c++类的成员有这些限制c++的类可以继承,c不可以。右值引用有什么作用?为了实现转移语义和完美转发,消除两个对象交互时不必要的对象拷贝、更加明确的定义泛型函数。static关键字作用?一,修饰局部变量时,让该变量在静态存储区分配内存;其作用域为局部作用域,不能一直被访问;只在首次函数调用时首次进行初始化,而后再调用...原创 2021-10-30 09:30:26 · 145 阅读 · 1 评论 -
C语言的位运算(个人笔记)——第一篇位运算总结
此为本人第一次写笔记传于网上,此时本人大二小白(欲想转码),若有错误望各位大神多加指点迷津........ 位运算,在C/C++中有着举重若轻的地位,几乎每一个学C/C++的都要学到这个知识点。它的一些骚操作也确实很考验搬砖人的搬砖功底......... 异或 ^n^n=0n^0=n以上是异或的基本性质,但实际操作中,异或能干什么呢?1.找出奇数我打个比方:已知一个数组:a[7]={1,2,2,3,4,4,3}现在我要找出那个只出现奇数次的那个数字,那么我就要利用...原创 2021-10-23 15:50:52 · 372 阅读 · 1 评论 -
Cpp学习笔记
此为智能指针学习笔记:智能指针:说白了就是个模板类,通过类的生命周期的自动结束效果,实现内存的主动释放。也就是拿指针当对象去处理完整程序如下:#include<memory>#include <iostream>using namespace std;class MM{public: MM(string name, int age) :name(name), age(age){} ~MM() { cout << " ~M..原创 2021-10-23 12:02:25 · 320 阅读 · 2 评论