C++
文章平均质量分 62
羊驼儿
菜鸟上路
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++:青蛙跳台阶问题
题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:2示例 2:输入:n = 7输出:21示例 3:输入:n = 0输出:1提示:0 <= n <= 100力扣题目链接点这里题目分析这种题目一般多少都会用到递归的思想,根据题目我们进行分析:设跳上台阶共有f(n)种方法原创 2021-04-02 12:22:03 · 2629 阅读 · 1 评论 -
我是真的不会写二分呀——二分查找详解!!!
二分查找算法我们会经常对它进行应用以及拓展,但它看起来很简单,实则漏洞状况百出,编写二分查找的算法就很迷惑,云里雾里,不要着急,看完这篇,立马干掉这个难题。二分查找1.概念二分查找是查找算法的一种,它又被称为折半查找,适用于有序数组中的查找。我们在平常进行查找时最通用的方法就是:对数组进行遍历,依次比较每个元素(即顺序查找)。二分查找对其进行优化,将每次的比较查找范围缩小了一半。2.算法思想二分查找就是将查找的的元素和子数组的中间值进行比较,如果查找元素小于中间值,就在左子数组中继续查找;如原创 2021-04-01 23:04:34 · 249 阅读 · 0 评论 -
C++:从尾到头打印链表
题目描述:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 10000方法一:遍历链表从尾到头依次输出class Solution {public: vector<int> reversePrint(ListNode* head) { vector<int> array; ListNode*原创 2021-03-31 15:32:36 · 396 阅读 · 0 评论 -
C/C++:动态内存管理详解戳这里
22原创 2021-03-03 23:18:25 · 268 阅读 · 1 评论 -
C/C++:让我康康谁还混淆面向对象和面向过程
作为一名计算机学生,入门时学习了C语言后,对于面向过程有了初步的认识,在之后更加深入的学习后,对于面向对象和面向过程有了一定的理解,那么这篇博客就一起研读一下两者的区别与联系~概念面向过程是分析解决问题的步骤,然后用函数把这些步骤一步一步地实现,然后在使用的时候一一调用即可。面向过程的性能较高。面向对象是把构成问题的事务分解成各个对象,而建立对象的目的也不是为了完成一个个步骤,而是为了描述某个事物在解决整个问题的过程中所发生的行为。性能上要比面向过程要低总而言之,面向过程是以过程为核原创 2021-03-03 20:04:17 · 160 阅读 · 1 评论 -
C++:两种避免头文件重复编译使用的方法
在C/C++语言中,变量、函数、结构体的定义和声明这些过程是分离的。声明通常放在头文件中,为了防止重复声明,就需要保证头文件的内容只被包含一次。。#ifndef宏定义和#pragma once功能为了避免同一个头文件被包含(include)多次1.#ifndef宏定义#ifndef,#endif是C/C++语言中的宏定义,通过宏定义避免文件多次编译。所以在所有支持C++语言的编译器上都是有效的,如果写的程序要跨平台,最好使用这种方式。使用语法#ifndef _FILE_H_#defi原创 2020-12-05 21:35:41 · 3116 阅读 · 0 评论 -
字符串最后一个单词的长度
题目描述计算字符串最后一个单词的长度,单词以空格隔开输入描述:输入一行,代表要计算的字符串,非空,长度小于5000。输出描述:输出一个整数,表示输入字符串最后一个单词的长度。示例输入hello nowcoder输出8牛客网题目链接在这里方法一:这个题目是要求我们计算字符串中最后一个单词的长度,拿到题目后,首先想到的是从后向进行遍历,使用count进行计数,遇到第一个(最后一个单词)空格进行停止,那么count种保存的数字就是最后一个单词的长度。其实现代码如下:#原创 2020-12-05 19:55:44 · 1814 阅读 · 0 评论 -
位运算的应用:强大的令人可怕
众所周知,我们学计算机的基础就是二进制和位操作,而位操作的应用又及其的灵活与广泛,又为我们的算法提供了新颖独特的思路。位运算基础位运算符描述运算规则<<左移二进位向左移若干位,高位丢弃,低位补0>>右移二进位向右移若干位,正数高位补0,负数高位补1&位与两个位都为1时才为1l位或两个位都为0时才为0~取反0变1,1变0^异或两个位相同时为0,相异为1位运算符介绍1、<< 左原创 2020-12-03 00:33:47 · 884 阅读 · 0 评论 -
力扣260: 只出现一次的数字iii
题目描述:给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。示例 :输入: [1,2,1,3,2,5]输出: [3,5]注意:结果输出的顺序并不重要,对于上面的例子, [5, 3] 也是正确答案。你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现?力扣题目链接题目分析通过遍历一次的异或运算,所保留得到就是仅出现一次的两个数的异或结果,我们将其标记为bit_mask;(我们这里得到的是异或的结果,不能原创 2020-12-02 20:23:32 · 162 阅读 · 0 评论 -
力扣137:只出现一次的数字ii
题目描述:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 :输入: [2,2,3,2]输出: 3输入: [0,1,0,1,0,1,99]输出: 99题目思路:我们依然采用位运算,利用异或运算的特殊性质进行求解,这次不同的是其他的数字都出现了三次,我们可以和与运算一起搭配使用进行判断。异或运算:x ^ 0 = xx ^ x = 0与运算:原创 2020-12-02 14:42:13 · 213 阅读 · 0 评论 -
力扣136:只出现一次的数字
题目描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 :输入: [2,2,1]输出: 1输入: [4,1,2,1,2]输出: 4力扣题目链接题目思路:不使用额外的空间进行统计次数,我们采用位运算进行解决:异或运算有以下三个性质:任何数和0做异或运算结果仍然是原来的数;即:a ^ 0 = a;任何数和自身做异或运算,结果仍然是原来的数,即:a原创 2020-12-02 14:19:05 · 203 阅读 · 0 评论 -
C++:另类加法
class UnusualAdd {public: int addAB(int A, int B) { while(B != 0) { int ret = A ^ B;//对应位的和 B = (A & B) << 1;//对应和的进位 A = ret; } return A; }};原创 2020-12-02 13:50:51 · 335 阅读 · 0 评论 -
求最小公倍数
题目描述正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。输入描述:输入两个正整数A和B。输出描述:输出A和B的最小公倍数。示例1输入5 7输出35题目链接求最小公倍数有多种思路解法:穷举法、辗转相除法等但效率更高更简便的一种求解思路是利用公式:最小公倍数=两数之积/最大公约数#include <iostream>using namespace std;int main(){原创 2020-12-01 11:31:45 · 555 阅读 · 0 评论 -
最大公约数
利用辗转相除法求两个数的最大公约数,其思路如下:求num1/num2的余数令temp= num1%num2之后将num2的值赋给num1再将num1的值赋给temp终止条件是num2不为0#include <iostream>using namespace std;int main(){ int num1, num2; cin >> num1 >> num2; while(num2) { int te原创 2020-12-01 11:31:25 · 159 阅读 · 0 评论 -
C/C++:看完这篇,| 和 ||,& 和 && 的区别就搞定
不知道大家是否可以很清楚的将这几个运算符进行很好的区分,我在学习C/C++过程中,总是会将几个的用法混淆,但困难总是要克服的,那么今天就一起攻克这个难题,将它双双拿下!我们将 || 和 && 定义为逻辑运算符,而 | 和 & 定义为位运算符。&& 如果两个操作数都是非0,则条件为真;||如果两个操作数中有一个任意一个非0,则条件为真;& 按位与操作,按二进制位进行"与"运算,运算规则:(有 0 则为 0)0&0=0;原创 2020-11-23 23:27:42 · 2079 阅读 · 0 评论 -
C++:友元函数,有这一篇就够了
在学习C++时,关于友元类和友元函数这一小节,感觉比较难理解,这篇就来一起研究关于友元的相关知识吧~我们将从以下几点深入剖析友元函数:为什么要引入友元函数?什么时候使用友元函数?怎样使用友元函数?友元函数的优缺点有哪些?友元函数1.引入友元函数的原因...原创 2020-11-23 22:28:42 · 571 阅读 · 0 评论 -
C++:String类相关接口介绍
在C语言中我们常使用char*字符串进行相关的操作,在使用字符串时,在学习C++时,标准库为我们提供了专门的string类的相关接口。抛弃了char*字符串的相关用法,是因为和标准库相较,我们在使用时不必考虑内存是否足够、字符串长度等等,并且作为了一个类出现,它所提供的相关函数的操作满足了我们大多数情况下的需求,我们可以简单的理解为string类是一种C++的基本数据类型。标准库的String类使用时包含在头文件<string>中;string是表示字符串的字符串类;标准的字符串类原创 2020-11-21 11:30:53 · 219 阅读 · 0 评论 -
C++:函数重载的详解看这里
缺省参数概念缺省参数是声明或定义函数时为函数的参数指定一个默认值,在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参。我们在学习C语言时,C语言编译器对函数原型的检测要求不严格,它不支持缺省参数。缺省参数分类:缺省参数有两种形式,它分为全缺省参数和半缺省参数。//全缺省参数void Test1(int a = 6, int b = 10, int c = 8){...原创 2020-11-16 20:45:08 · 787 阅读 · 0 评论 -
C++:缺省参数是怎样设置的?
缺省参数 我们在学习C语言时,C语言编译器对函数原型的检测要求不严格,因为它不支持缺省参数;在C++中,没有参数列表的函数,默认为void,不接受任何参数。void test(){ }int main(){ test(9); test(9, "No pains,no gains.\n"); return 0;}在C语言中代码可以编译通过;而在C++中由于参数类型的检测,编译无法通过;在C++对于函数参数检测更加严格,所以如果函数没有参数则不能接受任何参数。概念缺省参数原创 2020-11-12 23:15:14 · 2367 阅读 · 0 评论 -
C++:函数模板的初识
模板大致可以分为函数模板和类模板两种类型,函数模板是算法库的基础,类模板是建立标准库容器和迭代器的基础。这一小节跟随小编来一起深入的了解函数模板的相关知识。问题引入在进行编程时,我们该如何编写一个通用的加法函数,交换函数…这些呢?我们可以使用重载函数的方式进行实现,但重载函数只是类型不同,代码的复用率和可维护性都很低。int Add(int left, int right){ return left + right;}int Add(double left, double right){原创 2020-11-02 17:18:52 · 121 阅读 · 0 评论 -
C++:宏函数和内联函数(一看就明了)
宏函数宏函数的优缺点优点:增强代码的复用性。在预处理的阶段会将使用宏函数的位置用宏展开,少了函数压栈等开销,因此可以提高程序运行的效率。提高性能。缺点:不方便调试宏。(因为预编译阶段进行了替换)导致代码可读性差,可维护性差,容易使用错误。没有安全类的检查内联函数...原创 2020-10-29 11:29:53 · 1531 阅读 · 0 评论 -
C++:浅析this指针你确定不来看看吗?
this指针的原理是一个很复杂的问题,本篇就一起深入探讨this指针。this指针的引入首先我们来看一个简单的日期类:#include <iostream>using namespace std;class Date{public: void Display() { cout << _year << "-" << _month << "-" << _day << endl; } void Set原创 2020-10-22 17:27:17 · 175 阅读 · 0 评论 -
C++:1+2+3+...+n求和
题目描述求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。题目思路分析思路一:(直接进行求解)这是一个求和题目,看到这个题后,不假思索的直接使用一个for循环即可求和得出答案,但违背了题目中使用循环语句的条件;class Solution {public: int Sum_Solution(int n) { int sum=n; for(int i=1;i<n;+原创 2020-10-19 21:00:07 · 12138 阅读 · 0 评论 -
C++:C++初识
初识C++命名空间在学习C/C++过程中,变量、函数和类的名称都有他们的作用域,但这会产生很多很多冲突,使用命名空间的目的是对标识符的名称进行本地化,用来解决命名冲突的问题。通俗的来讲,命名空间实际上就是一个有名字的作用域,它是一种新的作用域。命名空间的定义命名空间中既可以定义变量,也可以定义函数namespace Program1//Program1是命名空间的名称{ int ...原创 2020-04-22 16:17:44 · 167 阅读 · 0 评论
分享