C++
peachzy
冲冲冲~
展开
-
并查集详解与例题
超容易理解超详细的并查集详解(一个大佬写的超详细):并查集详解LeetCode 547 省份数量class Solution { public: vector<int> father; int find(int x) { // 查父节点 int root = x; while (father[root] != -1) { root = fat原创 2022-05-28 09:06:45 · 348 阅读 · 0 评论 -
C++ 字符串与整数之间的转换
一、字符串转整数1、利用stoi函数#include<iostream>#include<string>using namespace std;int main(){ string s="99"; int num=stoi(s); cout<<num<<endl; return 0;}2、通过字符流进行转换#include<iostream>#include<string>#incl原创 2022-05-19 15:22:50 · 9769 阅读 · 0 评论 -
C++输入模式
输入:41 2 3 42 3 4 53 4 5 64 5 6 7方法一:#include <iostream>#include <algorithm>#include <string>#include <sstream>#include <vector>using namespace std;int main(){ string s; vector<vector<int>> num原创 2021-08-17 15:09:49 · 155 阅读 · 0 评论 -
strcmap C++实现
函数原型:int strcmp(const char *dest, const char *source)当dest大于source时,返回大于0的数当dest等于source时,返回0当dest小于source时,返回小于0的数代码如下:int strcmp(char *p1, char *p2){ while (*p1 && (*p1 == *p2)) { p1++; p2++; } if (*p1 - *p2原创 2021-06-22 15:36:10 · 202 阅读 · 0 评论 -
两个有序数组的第K个元素
题目:给定两个有序数组nums1,nums2,输出这两个数组排序后的第K个元素思路:参考评论1、使用两个变量i和j分别来标记数组nums1和nums2的起始位置。2、然后来处理一些边界问题,比如当某一个数组的起始位置大于等于其数组长度时,说明其所有数字均已经被淘汰了,相当于一个空数组了,那么实际上就变成了在另一个数组中找数字,直接就可以找出来了。3、如果K=1的话,那么我们只要比较nums1和nums2的起始位置i和j上的数字就可以了。4、难点就在于一般的情况怎么处理?因为我们需要在两个有序数组中原创 2021-06-21 09:42:20 · 1087 阅读 · 0 评论 -
C++ vector实现最大堆,最小堆 以及堆排序
通过利用数组vector建堆堆具体是如何调整参考此处代码实现:找出子节点和父节点的关系 :父节点 =(子节点-1)/ 2然后得到子父节点判断是否满足最大堆最小堆的条件不满足则进行调换#include <iostream>#include <vector>using namespace std;vector<int> nums = {6, 9, 2, 4, 7, 0, 1, 8, 3, 5};vector<int> maxheap(vec原创 2021-06-16 15:21:23 · 1035 阅读 · 0 评论 -
C++递归和迭代的区别,并举例说明
递归:函数自己重复调用自己迭代:利用变量的原值推算出变量的一个新值;A不停的调用B例子一:斐波那契数递归(recursion):#include #include using namespace std;int fab(int n){if (n == 0)return 0;if (n == 1)return 1;if (n > 1)return fab(n - 1) + fab(n - 2);}int main(){cout << fab(4) <原创 2021-03-31 12:29:17 · 667 阅读 · 0 评论 -
C++面试问题总结
一、static的作用不考虑类,static的作用主要有三条。1、第一个作用:隐藏当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。解释:假设我们要同时编译两个源文件,一个是a.cpp,另一个是main.cppa.cpp如下:#include<iostream>char a='A';void msg(){ cout<<"hello"<<endl;}则a.cpp中定义的全局变量a和函数msg能在main.cpp中使用原创 2021-03-11 20:53:17 · 276 阅读 · 0 评论 -
C++ 移位运算之左移右移
C++中的符号<<代表左移,相当终于乘2符号>>代表右移,相当于除以2例如:12>>1就是12除以212>>3就是12除以2^3(右移三位,除以三次2)1<<15就是2^15,左移15位,乘以15次2,即2^15...原创 2020-07-02 10:30:37 · 1742 阅读 · 0 评论 -
C++ 二叉树的遍历(前序、中序、后序)
二叉树如此下:12 34 5 6 7前序遍历:(根左右)1245367代码如下:class Solution {public: vector<int>res; void dfs(TreeNode* root){ if(!root) return; res.push_back(root->val); dfs(root->left);原创 2020-07-02 09:16:52 · 530 阅读 · 0 评论 -
LeetCode 107 二叉树的层序遍历II
题目描述:给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回其自底向上的层次遍历为:[[15,7],[9,20],[3]]思路:队列实现层序遍历,然后翻转代码如下:/** * Definition for a binary tree node. * struct TreeNode { * int原创 2020-06-22 20:08:11 · 153 阅读 · 0 评论 -
C++ 简单异常处理
异常处理通常有3个关键字throw:当出现问题的时候,程序会抛出一个异常,通过throw关键字来抛出catch:在想要处理异常的地方,使用catch来捕获这个异常try:中是包含异常的代码,后面通常紧跟catch来获得异常catch(),括号中是要捕获的异常的类型,下面扔出来的异常时char型的,因此catch中是char型,和变量名msg#include <iostream>using namespace std;double division(int a, int b) {原创 2020-06-22 16:29:39 · 151 阅读 · 0 评论 -
C++ std::move
例如:string a=“abcdefg”;string b;b=move(a);表示把a中的内容转移到b中没有内存的搬迁或者拷贝代码运行;原创 2020-06-22 12:55:04 · 135 阅读 · 0 评论