自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 环型链表

1. 给定一个链表,判断链表中是否有环。判断一个链表是否有环本质就是一个追一个跑,看是否能追上的问解题思路: 借助快慢指针来完成追赶问题定义两个指针(快指针和慢指针),两个指针均从表头的位置开始向后走, 一个走一步, 一个走两步, 如果带环那么一定会相遇。否则快指针就会遍历完二者还没有相遇, 快指针走到空的位置。class Solution {public: bool hasCycle(ListNode *head) { if(head == NULL)

2021-05-10 20:44:35 148

原创 二叉树的四种常考遍历方式以及习题整理

二叉树基础常考习题:1. 单值二叉树。Oj链接用根的值与左右字树的值进行判断; 看是否都相等class Solution {public: bool isU(struct TreeNode* root, int key){ if (root == NULL) return true; return root->val == key && isU(root->left, key) && isU(root->right, k

2021-05-02 21:15:58 789

原创 二叉搜索树基本实现

二叉搜索树----一般情况等于跟节点就不存放二叉搜索树又称为二叉排序树具有以下性质:1.若它的左子树不为空,则左子树上的所有节点的值都小于根节点的值2.若它的右子树不为空,则右字树上的所有节点的值都大于根节点的值3.它的左右子树也分别为二叉搜索树实现的操作:1.搜索查找------接近二分的查找(与树的特点相关)------平均查找次数(logn)2.插入:如果树中已经存在需要插入的数据,则不重复插入插入的位置:叶子,子树不完全的非叶子节点(度为0和度为1的节点)3.删除操作左子树:左子

2020-12-13 17:31:44 165 1

原创 找字符串中第一个只出现一次的数字

找字符串中第一个只出现一次的数#include <string>#include <iostream>using namespace std;//找出字符串中第一个只出现一次的字符void find_char(string str) { char s; //第一次出现的字符 int count[256] = { 0 };//存储各个字符出现的次数 for (auto& ch : str) { // 遍历每一个字符串 count[ch]++;//出现一次

2020-11-06 10:22:50 685 2

原创 c++中c_str()的用法

c++中c_str()的用法详解标准库的string类提供了三个成员函数来从一个string得到c类型的字符数组c_str():生成一个const char*指针,指向以空字符终止的数组。这个数组应该是string类内部的数组#include <iostream>//需要包含cstring的字符串#include <cstring>using namespace std;int main(){ //string-->char* //c_str()函数返回

2020-10-30 22:08:05 351 1

原创 string接口简单使用

string使用整理#include <string> #include <iostream>using namespace std;void test1() { //字符串的相关构造 /*string s1; string s2("123"); string s3(s2); string s4 = "123456";*/ //size: 返回有效字符的个数---和\0有区别 //length:返回有效字符的个数 string s1("123"); co

2020-10-30 11:25:35 395 1

原创 模板初阶:函数模板和类模板

模板初阶:函数模板和类模板1.函数模板格式template<typename/class T1,typename/class T2,typename/class T3.........typename/class Tn>#include <iostream>using namespace std;template<class T>T Add(const T& left,const T& right) { return left +

2020-10-30 09:05:19 97

原创 栈,队列,优先级队列,双端队列简单接口使用以及模拟实现

栈,队列,优先级队列简单接口使用对于栈要实现成的接口:栈满足先入后出的性质1.stack() 构造栈2.push() 入栈操作3.pop() 出栈操作4.empty() 判空操作5.size() 判定栈中有效元素的大小6.top() 获取栈顶元素#include <stack>#include <iostream>using namespace std;void test1() { stack<int> st; st.push(1);

2020-10-29 17:30:48 323

原创 list接口使用以及模拟实现

list接口简单使用list实现:泛型实现构造函数;无参构造#include<string>#include <list>#include <iostream>using namespace std;template<class T>void Printlst(const list<T>& lst) { for (const T& e : lst) { cout << e <<

2020-10-28 17:38:22 141

原创 vector模拟实现与接口使用

vector:接口简单实现//1.迭代器:#include<string>#include<vector>#include <iostream>using namespace std;void test1() { vector<int> v1; vector<char> v2; vector<string> v3; vector<int> v4(10, 5); //10个元素都是5 stri

2020-10-26 11:26:59 133

原创 String 类的模拟实现

String 类的模拟实现//深拷贝: 成员+资源//string类实现:类似于顺序表实现#define _CRT_SECURE_NO_WARNINGS#include <string>#include <iostream>using namespace std;class String {public: //迭代器:一种访问容器元素的机制,体现封装的特性,不需要关注容器的实现细节,就可以直接访问(可读可写)元素 //使用方式类似于指针 //1.解引用-

2020-10-25 22:31:29 137

原创 string简单使用举例:

string使用举例:1.字符串里面最后一个单词的长度#include <iostream>#include <string> using namespace std;int main() { string str; getline(cin, str); size_t pos = str.rfind(' ');//从后想向前找第一个出现空格的位置 if (pos == string::npos) //假如等于 pos == string::npos 说明不存

2020-10-21 21:19:16 437

原创 2020-10-20

求1+2+3…+n要求不能使用乘除法,for,while,if,else,switch等关键字以及条件判定语句.#include <iostream>using namespace std;class A {public: class Sum { public: //内部类直接访问外部类的私有成员 Sum() { _sum += _num; ++_num; cout << "Sun" << endl; } }; in

2020-10-20 19:04:00 60

原创 日期类的实现

日期类的实现:include <iostream>using namespace std;class Date{public: Date(int year=1,int month=1,int day=1) { if (year > 0 && month > 0 && month < 13 && day > 0 && day <= getMonthDay(year, month)) {

2020-10-13 19:48:17 166

原创 C语言的函数声明

C语言的函数定义和函数声明C语言不同于Java语言,在Java语言中,在一个类中,定义函数/方法后,在调用时不需要声明。在C语言中定义函数后,在使用前,需要在main函数前进行声明,否则会报错。#include <stdio.h>#include <stdlib.h>#include <string.h>void PrintArr(int* arr, int size) { for (int i = 0; i < size;i++) { print

2020-10-05 15:01:23 6094

原创 常见的7种排序算法

第七种排序: 归并排序基本思想: 先进行分解然后进行合并,合并时需要知道两个有序子序列的空间:[begin,mid],[mid+1,end] temp为辅助空间#include <stdio.h>#include <stdlib.h>#include <memory.h>//打印数组void PrintArr(int* arr, int size) { for (int i = 0; i < size;i++) { printf("%d ", a

2020-10-01 21:43:29 184

原创 实现一个函数来调整该数组中数字的顺序,使得所有的偶数位于数组的前半部分,所有的奇数位于位于数组的后半部分,

题目描述实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变基本思想: 先找到奇数的一组,在找到偶数的一组,然后将二者进行组合到另一个数组中即可方法1:常规思想,依次将奇数数据得到,进行重新组合到另一个数组中即可#include <stdio.h>#include <stdlib.h>void Printarr(int* arr,int size) { for (i

2020-09-28 21:46:39 338

原创 堆的模拟实现

堆的模拟实现//heap.p文件#pragma once #include <stdlib.h>#include <memory.h>typedef int HPDataType;typedef struct Heap{ HPDataType* _array; int _size; int _capacity;}Heap;void Swap(int array[], int left, int right);void shiftCreat(Heap*

2020-09-11 17:50:17 112

原创 队列和队列的模拟实现以及习题整理

队列实现队列满足先进先出的原则//quque.h文件#pragma once #include <stdlib.h>#include <stdio.h>typedef int QDataType;typedef struct QNode{ struct QNode* _next; QDataType _data;}QNode;typedef struct Queue{ QNode* _front; QNode* _rear; int _size;

2020-09-06 17:37:23 236

原创 链表的模拟实现以及重点习题整理

链表的实现://SingleList.c 文件#include "SingleList.h"#include <stdio.h>#include <string.h>#include <stdlib.h>void singleListInit(Singlelist* sl) { sl->_head = NULL;}Node* creatNode(Type data) { Node* node = (Node*)malloc(sizeof(No

2020-09-03 15:54:22 170

原创 顺序表模拟实现以及习题整理

顺序表实现://seqlist.c文件中#include "seqlist.h"#include <stdlib.h>#include <string.h>//初始化void seqListInit(seqlist* sl) { sl->_array = (DataType*)malloc(4 * sizeof(DataType)); sl->_capacity = 4; sl->_size = 0;}//尾插void seqListPu

2020-08-26 17:36:45 149

原创 通讯录程序

通讯录程序需求是写一个程序管理若干个联系人的信息,包含姓名电话,针对联系人信息能够实现"增删改查的操作"#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_SIZE 200//描述一个联系人的信息typedef struct PersonInfo{ char name[1024]; char phone[1

2020-08-18 15:34:04 114

原创 函数指针的简单使用和说明

函数指针介绍:基本概念函数指针,其本质是一个指针变量,该指针指向这个函数。总结来说,函数指针就是指向函数的指针。声明格式: 类型说明符(*函数名) (参数)类型: int(*p)(int x,int y)函数指针是需要把一个函数的地址赋值给它,有两种写法:fun = &Function;fun = Function;调用函数指针的方式:(*fun)();fun();#include <stdio.h>#include <stdlib.h>voi

2020-08-05 10:43:32 476

原创 整数和浮点数在内存中的存储

整数在内存中的存储:1.大小端字节序的断定:#include <stdio.h>#include <stdlib.h>int IsLittleEnd() { int a = 0x11223344; int* p1 = &a; char* p2 = (char*)&a; if (*p2 == 0x44) { return 1; } return 0;}int main () { printf("%d\n",IsLittleEnd());

2020-08-01 16:36:10 481

原创 字符数组与字符串的逆序

字符数组与字符串的逆序区别类型1.写一个函数,可以逆序一个字符串#include <stdio.h>#include <stdlib.h>#include <string.h>void Rever_str(char str[],int len) { int left = 0; int right = len - 1; char temp; for (left = 0, right = len - 1; left <= right; left+

2020-08-01 10:23:28 755

原创 递推类问题

递推类问题总结:一、n条直线最多分平面问题题目大致如 : n条直线,最多可以把平面分为多少个区域。分析 : 可能你以前就见过这题目,这充其量是一道初中的思考题。当有n - 1条直线时,平面最多被分成了f(n - 1)个区域。则第n条直线要是切成的区域数最多,就必须与每条直线相交且不能有同一交点。 这样就会得到n - 1个交点。这些交点将第n条直线分为2条射线和n - 2条线断。而每条射线和线断将以有的区域一分为二。这样就多出了2 + (n - 2)个区域。故:f(n) = f(n - 1) + n

2020-07-30 22:27:52 586

原创 动态规划总结

动态规划算法详解及走方格问题问题描述:小王从目的地A要去目的地B,请问有多少种不同的路线?规则是只能向下和向右走,不能逆着走。能用动规解决的问题的特点:问题具有最优子结构性质。如果问题的最优解所包含的 子问题的解也是最优的,我们就称该问题具有最优子结 构性质。无后效性。当前的若干个状态值一旦确定,则此后过程的演变就只和这若干个状态的值有关,和之前是采取哪种手段或经过哪条路径演变到当前的这若干个状态,没有关系。有重叠子问题:即子问题之间是不独立的,一个子问题在下一阶段决策中可能被多次使用到(该性质

2020-07-28 20:20:03 228

原创 将参数字符串中的字符反向排列

将参数字符串中的字符反向排列.解题思路: 将前后首位的字符串进行换位置即可.递归实现#include <stdio.h>#include <stdlib.h>#include <string.h>void reverse_string(char str[]) { if (*str) { int i = strlen(str) - 1; char temp; temp = str[0]; str[0] = str[i]; str[i] =

2020-07-27 10:42:13 110

原创 两个int(32位)整数m和n的二进制表达式中有多少个位(bit)不同?

编程实现:两个int(32位)整数m和n的二进制表达式中有多少个位(bit)不同?输入例子: 1999 2299 输出例子: 7解题思路1.首先我们要了解一个运算符异或(^)如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。所以我们只须判断对应的比特位的值异或是否为1即可。2. 只要确保为1,那么证明两个数字对应的二进位肯定是不相同的,然后再对得到的数字进行判定二进制中1的个数,那么就是数字a和b中不一样的位置3. 考虑&的性质0 & 0 = 0

2020-07-26 21:28:35 320

原创 switch 语句的简单使用

switch 语句switch简单使用的场景 一般都是处于分支结构中,当题目中需要进行多次分支时,并且借助if 语句使用复杂时, 那么这种情况可以考虑一下switch语句对于某一些问题switch语句相对来说还是比较简单,但是大多数情况下都会被if语句所替换.Switch选择结构格式:格式:swtich(表达式) { // ()中的数据类型仅仅支持整数 case 常量1 : 要执行的语句;

2020-06-29 11:07:58 48856 5

原创 栈 队列 优先级队列 模拟实现(C++)

栈 队列 优先级队列模拟实现栈 的模拟实现常用接口 push pop front size empty栈遵循后进先出的原则利用c++库中来实现相对比较简单有三种方式可以模拟实现栈的过程 1.vector 2.list 3.deque#include <queue>#include <vector>#include <list>#include <iostream>using namespace std;template <cla

2020-06-22 22:29:20 249

原创 两个队列实现一个栈(C++实现)

两个队列实现一个栈(C++实现)题目概述:用两个队列实现一个栈,请实现他的两个函数Push 和 Pop,分别完成入栈和出栈功能。题目分析:我们知道队列结构的特点是“先进先出”,栈结构的特点的“先进后出”;仔细分析这道题,本道题的要求为将两个队列组合起来形成一个“先进后出”结构。这里我们令第一个队列为queue1,第二个队列为queue2,起始两个队列均为空。首先我们陆续向栈中压入元素a、b、c,这里我们先压入queue1中,此时queue1中的元素为{ a,b,c }(其中a为队首元素,c为队尾

2020-06-21 15:40:44 1135

原创 用两个栈实现队列(C++实现)

用两个栈实现队列用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1:输入:[“CQueue”,“appendTail”,“deleteHead”,“deleteHead”][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入:[“CQueue”,“deleteHead”,“append

2020-06-21 10:13:38 1530

原创 最小栈

最小栈设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。示例 :输入:[“MinStack”, “push”, “push”, “push”, “getMin”, “pop”, “top”, “getMin”][[], [-2], [0], [-3], [], [], [], []]输出:[null

2020-06-20 16:07:20 113

原创 位运算的使用

位运算的巧妙应用题1:找出唯一成对的数解题思路:n ^ 1 ^ 1 = n, 一个数两次^同一个数,得到数本身。n ^ 0 = n, 任何数异或0都是他自己。将res ^数组下标 ^ 数组的value,最终得出的结果就为重复值。方法1.另外开辟一个数组arr,遍历原来的数组,原来数组中的数就是arr中的下标, 若遇到一个数就将对应arr的下标位置对应的值加一就行。然后拿新创建的数组判定其值大小,若遇到下标位置对应的值为2的时候,输出下标就行,对于同一个以arr[]的值作为新创建的数组下标

2020-06-18 21:43:57 618

原创 找出只出现一次的两个数字,其余数字出现2次,

找出只出现一次的两个数字,其余数字出现2次,思路:第一步:利用分治的思想先将两个出现一次的数字找出来,第二步:然后将整体分解成某一位是0和1的两组数字,第三步:然后在分别进行异或就可以了具体过程如下:#include <stdio.h>#include <stdlib.h>#include <string.h>void FindTwoNum(int arr[], int size, int* num1, int* num2){ //首先找到数组中出现

2020-06-17 10:03:41 555

原创 找出唯一成对的数

找出唯一成对的数方法1.嵌套另外开辟一个大小为1001的数组arr,遍历原来的数组,原来数组中的数就是arr中的下标,若遇到一个数就将对应arr的下标位置对应的值加一就行。然后遍历arr数组,若遇到下标位置对应的值为2的时候,输出下标就行类似于内部嵌套一个,进行遍历#include<stdio.h>#include <stdlib.h>int main() { int i = 0; int arr[6] = { 1, 2, 4, 4,7, 5 }; int n

2020-06-16 17:37:12 245

原创 centos 中英文输入法切换简单操作

centos 中英文输入法切换安装完CentOS7后如果没有拼音输入法,先在输入源里找下有没有。应用程序-》系统工具-》设置>>区域和语言>>输入源查找输入设置:虚拟机界面,左上角有一个应用程序,点开应用程序找到一个系统工具点开系统工具,找到里面的设置打开设置,里面有一个区域和语言:进入到区域和语言,就到了下面如图中,里面就能进行输入源的设置点里面的+ 号 在里面查找所需要的输入源,语言即可弄完这些,基本中英文切换输入就成功了...

2020-06-16 11:24:59 709

原创 杨辉三角以及应用

杨辉三角问题描述给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]首先要弄清楚规律:1.每一列的第一个元素和每一列的最后一个元素都是等于1.2.当前行的元素大小等于上一行的左右两个元素之和.arr[i][j]=arr[i-1][j-1]+arr[i-1][j]#define _CRT_SECURE_N

2020-06-16 10:56:07 4787 1

原创 vector接口简单使用

vector 的使用一.(contruct)构造函数说明1.无参构造 vector v1;2.构造并初始化n个val;vectorv2(n,val);3.拷贝构造 vectorv3(v2);4.使用迭代器进行初始化构造#include <string>#include <iostream>using namespace std;#include <vector>//每一种打印遍历的方式都是 for+operator[]void test1() {

2020-06-13 16:55:46 315

空空如也

空空如也

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

TA关注的人

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