
c++ 编程
文章平均质量分 52
中南自动化学院至渝
好记性不如烂笔头,多写写
展开
-
华为笔试 多进制的计算器
这个题300分,但是我觉得不算难,因为之前做过一个十进制的计算器设计的力扣题,十进制的我会了,其他进制的,我不想麻烦了,那就先把表达式都转成十进制的呗,然后调十进制的计算函数。最后得到的结果再转成对应进制。大体意思就是,你是一个工作人员,你工作中老是遇到各种进制的表达式计算,你觉得太麻烦了,就想着 写一个多进制的计算器,给定进制和对应的表达式字符串,给出表达式计算的值。这种运算符就保持原样,数字就把他转成10进制(c的库函数strtol),如何获得数字对应的字符串也简单,不断往后遍历,指导遇到一个运算符。原创 2022-10-13 10:04:40 · 15480 阅读 · 0 评论 -
C++ const关键字口诀,保证你弄明白const关键字使用
前沿 前面吐槽下, 我发现很多人都是不看c++标准的,就这个const使用,标准里面明明说了,把被修饰的东西放在const左边,但是你搜文章一大堆放在右边的,说是好看,最后c++那边也兼容了放在右边这种写法。口诀const默认作用于其左边的东西,如果左边没有东西那么作用于其右边的东西 我们在用的是,先从右到左(其实就是从后往前)找const原创 2022-03-07 12:40:54 · 15516 阅读 · 0 评论 -
在C++中,初始化 vector 为1-n
之前的文章 c++里面 vector的初始化方法介绍了常见的几种初始化,比如初始化大小,初始化大小的同时全部赋初值0(默认),1,2,3等等,或者直接把所有的元素都给初值一一匹配背景 都有了一一匹配的了,为什么还要写这篇文章呢?因为有时候 n可能会比较大,你全部写太多了,麻烦吧核心代码iota(v.begin(), v.end(), 初始值);例如iota(v.b原创 2021-04-27 09:32:14 · 21996 阅读 · 0 评论 -
有序数组的查询三种方法,二分,插值,斐波那契,我觉得这是最优化的知识,不是编程算法的,可能大家不分家吧
问题背景 给定一个有序数组nums,和一个待查找的数target,找到target的下标 最简单的是挨个遍历,这个时间复杂度太拉跨了,不讨论方法1----------二分法 每次都折半查找,找到就返回#include <algorithm>#include <iostr原创 2021-04-15 21:53:48 · 25482 阅读 · 0 评论 -
Lccup 力扣杯春季编程大赛 2. 乐团站位 给定坐标和阶数 求螺旋数组中对应下标的值
题目 某乐团的演出场地可视作 num * num 的二维矩阵 grid(左上角坐标为 [0,0]),每个位置站有一位成员。乐团共有 9 种乐器,乐器编号为 1~9,每位成员持有 1 个乐器。 为保证声乐混合效果,成员站位规则为:自 grid 左上角开始顺时针螺旋形向内循环以 1,2,…,9 循环重复排列。例如当 num = 5 时,站位如图所示原创 2021-04-07 13:30:58 · 25341 阅读 · 0 评论 -
Lccup 力扣杯春季编程大赛 1、采购方案
题目描述 小力将 N 个零件的报价存于数组 nums。小力预算为 target,假定小力仅购买两个零件,要求购买零件的花费不超过预算,请问他有多少种采购方案。 注意:答案需要以 1e9 + 7 (1000000007) 为底取模,如:计算初始结果为:1000000008,请返回 1示例 1:输入:nums = [2,5,3,5], t原创 2021-04-07 09:10:51 · 25225 阅读 · 0 评论 -
力扣 1011. 在 D 天内送达包裹的能力
1011. 在 D 天内送达包裹的能力传送带上的包裹必须在 D 天内从一个港口运送到另一个港口。传送带上的第 i 个包裹的重量为weights[i]。每一天,我们都会按给出重量的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。返回能在 D 天内将传送带上的所有包裹送达的船的最低运载能力。示例 1:输入:weights = [1,2,3,4,5,6,7,8,9,10], D = 5输出:15解释:船舶最低载重 15 就能够在 5 天内送达所有包裹,如下所示:第 1 天原创 2021-03-08 12:29:42 · 26011 阅读 · 0 评论 -
c++使用reverse时要引入头文件<algorithm>用来反转一个序列
使用前记得引入头文件#include <algorithm>用法反转 vectorvector<int> a = {1,2,3,4,5};reverse(a.begin(),a.end());//a的值为5,4,3,2,1反转 stringstring str="12345";reverse(str.begin(),str.end());//str结果为"54321"...原创 2021-03-08 10:59:17 · 27143 阅读 · 2 评论 -
字符串乘法,简单易懂,包含由字符串加法和字符串与单字符乘法结合而成
字符串加法和字符串与单字符乘法见 简单常用的一些函数,个人的函数库 的13和14#include <algorithm>#include <iostream>#include <string>using namespace std;string addStrings(string num1, string num2) { string str; int原创 2021-03-08 10:49:06 · 25778 阅读 · 0 评论 -
leetcode 面试题 01.05. 一次编辑 动态规划
面试题 01.05. 一次编辑其实就是编辑距离 leetcode 72 编辑距离 动态规划class Solution {public: int min(int a, int b, int c) { int temp = a > b ? b : a; int result = c > temp ? temp : c; return result; } bool oneEditAway(string first, st原创 2021-01-07 16:50:45 · 25982 阅读 · 3 评论 -
leetcode 461. 汉明距离
461. 汉明距离简单题还真是简单class Solution {public: //判断一个整型数的二进制表示有多少个1 int CountOfOneInBinaryNumber(int num) { int count = 0; while (num) { num &= (num - 1); count++; } return count; } i原创 2021-01-07 16:47:01 · 25876 阅读 · 1 评论 -
leetcode 300 最长递增子序列 动态规划
300 最长递增子序列 想弄明白动态规划建议看大佬的笔记 算法书籍分享class Solution {public: int max(int a,int b){ int result=a>b?a:b; return result; } int lengthOfLIS(vector<int>& nums) { int n=nu原创 2021-01-07 16:28:17 · 25836 阅读 · 1 评论 -
二维数组的顺时针旋转与逆时针旋转 python c++ 二维数组取第i列元素组成一个新列表(python)
刷剑指offer时候遇到的,写一个小功能函数放这儿剑指offer 19、顺时针打印矩阵 python c++逆时针旋转python版 def turn(self,matrix): new = [] if not matrix: #列表为空,返回空列表 加这句主要是为空时下面计算列数时的matrix[0]超出下标范围 return new #或者return matrix 都一样 col = len(matrix[0]原创 2020-06-13 21:52:37 · 25674 阅读 · 0 评论 -
反转vector的实现,其实已经有reverse了,但是想自己写一下
如题 想反转vectorvoid reverseVector(vector<int> value) int temp=0; int i=0,j=value.size()-1; while(i<j){ temp=value[i]; //也可以用swap函数,swap(value[i],value[j]); value[i]=value[j]; value[j]=temp; i++;原创 2020-05-08 20:07:12 · 25645 阅读 · 0 评论 -
统计字符串中字符出现的次数(a-z)
目的就是统计一个字符串(只有a-z)中每个字符出现的次数第一种方法vector<int> countOfChar(string s) { vector<int> arr(26,0); //初始化26个0 for(int i=0;i<s.size();++i){ //求各个字符的个数 arr[s[i]-'a']++; } return arr...原创 2020-04-25 10:07:43 · 26726 阅读 · 2 评论 -
动态规划解决汉诺塔问题——清晰明了的思路
1 问题描述有A,B,C三个柱子,A柱子上从上到下,从小到大排列着n个圆盘。现要求将A柱子上的n个圆盘全部移动到C柱子上,依然按照从上到下,从小到大的顺序排列。且对移动过程要求如下:a)一次只能移动一个盘子。b)移动过程中大盘子不允许出现在小盘子上方。问:总共需要移动的步数是多少?思路简要如下:将移动步骤分为三步,a)将最上面的n-1个盘子从A柱子移动到B柱子上b)将最大的盘子移动到...原创 2020-03-15 18:06:03 · 25468 阅读 · 0 评论 -
洗牌算法或者叫打乱数组顺序算法
for(int i = n - 1; i >= 0 ; i -- ) swap(arr[i], arr[rand(0, i)]) // rand(0, i) 生成 [0, i] 之间的随机整数从后往前交换是因为生成 [0, i] 范围的随机数比生成 [i, n) 范围的随机数简单,直接对 i+1 求余就好了。n个数有n!种组合,这样交换可以实现产生的每个组合是等可能的。有一个...原创 2020-03-10 18:04:24 · 24811 阅读 · 0 评论 -
717. 1比特与2比特字符
题目:有两种特殊字符。第一种字符可以用一比特0来表示。第二种字符可以用两比特(10 或 11)来表示。现给一个由若干比特组成的字符串。问最后一个字符是否必定为一个一比特字符。给定的字符串总是由0结束。换句话说就是字符串的最后一位是0,因为考虑到最后一位是1肯定不可能最后一个字符是否必定为一个一比特字符。示例 1:输入: bits = [1, 0, 0]输出: True解释: 唯一...原创 2020-01-20 19:18:20 · 24774 阅读 · 0 评论 -
1254. 统计封闭岛屿的数目
题目:有一个二维矩阵 grid ,每个位置要么是陆地(记号为 0 )要么是水域(记号为 1 )。我们从一块陆地出发,每次可以往上下左右 4 个方向相邻区域走,能走到的所有陆地区域,我们将其称为一座「岛屿」。如果一座岛屿 完全 由水域包围,即陆地边缘上下左右所有相邻区域都是水域,那么我们将其称为 「封闭岛屿」。请返回封闭岛屿的数目。换句话说就是从当前陆地走,你走不到数组边界的陆地都是封闭岛屿(或...原创 2020-01-20 18:16:33 · 24853 阅读 · 0 评论 -
764. 最大加号标志
题目:在一个大小在 (0, 0) 到 (N-1, N-1) 的2D网格 grid 中,除了在 mines 中给出的单元为 0,其他每个单元都是 1。网格中包含 1 的最大的轴对齐加号标志是多少阶?返回加号标志的阶数。如果未找到加号标志,则返回 0。一个 k" 阶由 1 组成的“轴对称”加号标志具有中心网格 grid[x][y] = 1 ,以及4个从中心向上、向下、向左、向右延伸,长度为 k-...原创 2020-01-15 15:18:58 · 24659 阅读 · 0 评论 -
165. 比较版本号
比较两个版本号 version1 和 version2。如果 version1 > version2 返回 1,如果 version1 < version2 返回 -1, 除此之外返回 0。你可以假设版本字符串非空,并且只包含数字和 . 字符。 . 字符不代表小数点,而是用于分隔数字序列。例如,2.5 不是“两个半”,也不是“差一半到三”,而是第二版中的第五个小版本。你可以假设...原创 2020-01-15 10:20:08 · 24779 阅读 · 0 评论 -
8. 字符串转换整数 (atoi)
请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽...原创 2020-01-15 10:18:29 · 24653 阅读 · 0 评论 -
LeetCode1219 黄金矿工
题目描述:你要开发一座金矿,地质勘测学家已经探明了这座金矿中的资源分布,并用大小为 m * n 的网格 grid 进行了标注。每个单元格中的整数就表示这一单元格中的黄金数量;如果该单元格是空的,那么就是 0。为了使收益最大化,矿工需要按以下 规则 来开采黄金:每当矿工进入一个单元,就会收集该单元格中的所有黄金。矿工每次可以从当前位置向上下左右四个方向走。每个单元格只能被开采(进入)一次。...原创 2020-01-12 12:40:36 · 24609 阅读 · 0 评论 -
1、两数之和
题目: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数, 并返回他们的数组下标。你不能重复利用这个数组中同一...原创 2019-11-08 15:17:28 · 17907 阅读 · 0 评论 -
c++关于map的find和count的使用
count函数count函数返回的是一个容器中,某一元素出现的次数,对于map,即返回key出现的次数,但是map中的key是不允许重复出现的,故count函数返回值只能是1(存在)或0(不存在)。换句话说,在map中使用count()函数作用是判断map中有无此键使用方式 :map<int,int> a; if(a.count(key)) { ............原创 2020-01-12 09:20:37 · 25577 阅读 · 0 评论 -
11、盛最多水的容器
题目:给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。画 n 条垂直线,使得垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。注意: 你不能倾斜容器,n ...原创 2020-01-09 15:18:44 · 24423 阅读 · 0 评论 -
3、无重复字符的最长子串
题目 :给定一个字符串,请你找出其中不含有重复字符的 最长子串的长度。思路:动态规划的想法去做,首尾指针来确定长度,首先从第一个字符作为开始位置形成子串,逐渐加入后一个字符,遍历判断刚加入的字符是否在之前已经存在,遍历结束都不存在说明加入这个字符后形成的子串还是无重复字符的。如果遍历到某个位置(k)是发现该字符已经存在了,说明不满足条件,我们需要把子串的起始位置(start)更新为该位置(k)的...原创 2019-11-08 16:03:17 · 17759 阅读 · 0 评论 -
字符串匹配和KMP模式匹配(没太学懂,暂时不写)
//字符串匹配int stringMatching(string longstr, string smallstr){ int lLen = longstr.size(), sLen = smallstr.size(); for (int i = 0; i < lLen - sLen; ++i) { for (int j = 0; j < sLen; ++j) { if...原创 2020-01-09 14:35:22 · 24619 阅读 · 0 评论 -
交换函数多种奇奇怪怪的实现方法
引用来交换void swap(int& a, int& b) { int temp = a; a = b; b = temp;}指针来交换void swap(int* a, int* b) { int temp = *a; *a = *b; *b = temp;}加法来交换void swap(int& a, int& b) { a =...原创 2019-12-31 10:08:38 · 24560 阅读 · 0 评论 -
c++中string里面的size()和length()
二者没有区别二者没有区别二者没有区别返回值都是字符长度,不存在区别,但注意与size_of这个运算符以及strlen()这个函数做对比。string str="0123456";cout <<"str.length()="<<str.length()<<endl; //结果为7cout <<"str.size...原创 2019-12-31 09:32:17 · 32011 阅读 · 2 评论 -
插入排序
void swap(int& a, int& b) { int temp = a; a = b; b = temp;}void insert_sort(int nums[], int len){ for (int i = 1; i < len; i++) { //从第二个数开始 if(num[i]<num[i-1]){ /...原创 2019-12-26 16:30:11 · 24438 阅读 · 0 评论 -
选择排序
void swap(int& a, int& b) { //两数互相交换 int temp = a; a = b; b = temp;}void selection_sort(int nums[], int len){ int min=0; for (int i = 0; i < len; i++) { min=i; //定义当前值的下标...原创 2019-12-26 16:05:18 · 24490 阅读 · 0 评论 -
快速排序算法
快速排序的算法,说一下快速排序的思想。从数组中找一个数作为基准(一般就是数组第一个元素)。小于基准的数放到数组前面,大于基准的数放到数组后面。数组变成 小 |基准| 大。然后比基准小的数组成新的数组,继续用这种方法处理排序(基准是新数组的第一个元素)比基准大也是同样处理的。容易想到当基准前...原创 2019-12-26 15:49:24 · 24487 阅读 · 0 评论 -
一句话解释清楚冒泡排序思想与做法
在介绍之前先给出交换程序的代码void swap(int& a, int& b) { //两数互相交换 int temp = a; a = b; b = temp;}以下介绍几种方式的冒泡排序void bubble_sort(int nums[],int len){ //冒泡排序法 for (int i = 0; i < len-1; i...原创 2019-12-26 15:44:08 · 24709 阅读 · 0 评论 -
删除字符串中出现次数最少(最多)的字符
注意:用的min_element()函数count()函数等都需要包含头文件 include <algorithm>题目:给定一个字符串,删除出现字数最少的字符。思路:字符最多26个,用长度为26的数组保存各个字符的数量,然后计算出最小值,再对字符串遍历一遍,如果字符对应的数字大于最小值就输出(排除次数为0的情况)。注意一点是字符出现次数可能是0,这种情况要排除的。string ...原创 2019-12-18 11:49:48 · 25654 阅读 · 0 评论 -
c++里面的find()和erase()
1、find()函数使用find()函数需要#include<algorithm>str_big.find(str_small) 代表从str_big 的所有子串中查找与 str_small匹配的子串,找到则返回str_small第一个字符在str_big中的下标,找不到则返回string::npos(如果有多个字符都可以匹配,那么只会返回第一个匹配的) #include&...原创 2019-11-15 17:20:35 · 18559 阅读 · 0 评论 -
c++的n=n++问题,和java里面的n=n++问题
一个面试题多次循环n=n++;最后的n是多少,是原值。百思不得解,记录一下心得public class Test { public static void main(String[] args) { int n = 5; for(int i = 0; i<5; i++){ n = n++; System.out.println(n); } System.out...原创 2019-10-27 22:56:13 · 19587 阅读 · 0 评论 -
除去英文句子中的数字、空格和标点符号
题目:一个英文句子,句子中仅包含英文字母,数字,空格和标点符号,其中数字、空格和标点符号将句子划分成一个个独立的单词,除去句子中的数字、空格和标点符号,将句子中的每个单词的首字母大写,然后输出句子,输出时各个单词之间以一个空格隔开,句子以“.”结束输入样例 1Who love?, Solo..输...原创 2019-08-01 19:28:10 · 19541 阅读 · 0 评论 -
判断字符串中的括号是否匹配
题目:给你一个字符串,判断字符串中的括号是否匹配,意思就是一个左括号要对应一个右括号,即'('和')'必须成对出现。那不就是判断字符串里面的'('和')'数量是不是相等吗,这个简单呀,用stl算法里面的count()函数;开撸#include<iostream>#include<s...原创 2019-08-01 19:57:20 · 23318 阅读 · 3 评论 -
数字金字塔
输入一个整数n,输出金字塔型的数字,左右对称。如:输入:5输出: 1 121 12321 1234321123454321注意每一行末尾不要输出多余空格,也就是说最后一个数字后没有空格#include <iostream>using std::cin;using std::cout;using std::endl;void PrintfSpa...原创 2019-08-05 15:47:06 · 20684 阅读 · 0 评论