
c++
pengfeierzhang
这个作者很懒,什么都没留下…
展开
-
leetcode 134. 加油站
题目叙述在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。说明:如果题目有解,该答案即为唯一答案。输入数组均为非空数组,且长度相同。输入数组中的元素均为非负数。示例 1:输入:gas = [1,2,3,4,5]cost = [3,4,5,1,2]原创 2020-11-04 14:31:30 · 108 阅读 · 0 评论 -
如何在软件CodeRunner3中使用C++11的标准
原创 2020-11-04 14:17:13 · 422 阅读 · 0 评论 -
while循环和do-while循环
do-while循环对于do-while循环来说,先进行一步操作,然后再进行条件判断。而对于while循环来说,就是先执行条件判断,然后再进行执行while逻辑。do-while转化为while循环一般while循环用的较多,可以通过在while循环的上面多写一遍业务逻辑来实现do-while到while的转换。do-while循环class Solution {public: int rand10() { int i = 0; do{原创 2020-09-05 00:20:00 · 2582 阅读 · 0 评论 -
leetcode 121. 买卖股票的最佳时机I,II,III,IV
题目给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。代码class S原创 2020-08-07 20:46:08 · 146 阅读 · 0 评论 -
leetcode 165. 比较版本号
题目叙述比较两个版本号 version1 和 version2。如果 version1 > version2 返回 1,如果 version1 < version2 返回 -1, 除此之外返回 0。你可以假设版本字符串非空,并且只包含数字和 . 字符。. 字符不代表小数点,而是用于分隔数字序列。例如,2.5 不是“两个半”,也不是“差一半到三”,而是第二版中的第五个小版本。你可以假设版本号的每一级的默认修订版号为 0。例如,版本号 3.4 的第一级(大版本)和第二级(小版本)修订号分原创 2020-08-07 20:10:53 · 145 阅读 · 0 评论 -
C++将字符串转化为整数
方法一:自己手动实现#include <iostream>using namespace std;int strToint(string s){ int ans = 0; for(int i=0;i<s.size();i++) ans = ans * 10+ s[i]-'0'; return ans;}int main(int argc, char *argv[]) { int ans = strToint("1234"); cout<<ans; }原创 2020-08-05 15:27:10 · 11329 阅读 · 0 评论 -
C++使用unique进行去重
unique函数的作用功能是去除相邻的重复元素(只保留一个)unique函数不真正把重复的元素删除,其实是,该函数把重复的元素移到后面去了,然后依然保存到了原数组中,然后返回去重后最后一个元素的x下一个地址,因为unique去除的是相邻的重复元素,所以一般用之前都会要排一下序使用unique对vector进行去重先对vector进行排序使用erase函数结合unique进行去重#include <iostream>#include <vector>#inclu原创 2020-08-05 10:32:11 · 1061 阅读 · 0 评论 -
华为面试题:将整数中的数字去重
题目描述输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。输入描述:输入一个int型整数输出描述:按照从右向左的阅读顺序,返回一个不含重复数字的新的整数示例1输入 9876673分析考虑使用数组充当哈希表进行判断数字是否已经在前面出现代码#include<iostream>#include<algorithm>using namespace std;int main(){ int nums[10]={0}; in原创 2020-08-04 23:20:55 · 219 阅读 · 0 评论 -
华为笔试题:字符串排序
题目叙述编写一个程序,将输入字符串中的字符按如下规则排序。规则 1 :英文字母从 A 到 Z 排列,不区分大小写。如,输入: Type 输出: epTy规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。如,输入: BabA 输出: aABb规则 3 :非英文字母的其它字符保持原来的位置。如,输入: By?e 输出: Be?y如何不使用排序函数对字符串进行排序,且对于相同的字符,按照其出现的先后顺序进行排序可以在O(n)O(n)O(n)的情况下进行排序。思想主要是计数排序。#原创 2020-08-04 22:52:15 · 1875 阅读 · 0 评论 -
华为笔试题:字符串倒排
对字符串中的所有单词进行倒排。说明:1、构成单词的字符只有26个大写或小写英文字母;2、非构成单词的字符均视为单词间隔符;3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;4、每个单词最长20个字母;思考如果不考虑第二条的话,代码如下:#include<iostream>#include<vector>#include<sstream>using namespace std;原创 2020-08-04 22:18:15 · 449 阅读 · 0 评论 -
673. 最长递增子序列的个数
给定一个未排序的整数数组,找到最长递增子序列的个数。示例 1:输入: [1,3,5,4,7]输出: 2解释: 有两个最长递增子序列,分别是 [1, 3, 4, 7] 和[1, 3, 5, 7]。分析本题是改编自leetcode 300, 对于leetcode 300是单纯地求解最长上升子序列的长度。代码如下:class Solution {public: int lengthOfLIS(vector<int>& nums) { int ans =原创 2020-08-04 20:42:49 · 148 阅读 · 0 评论 -
剑指 Offer 46. 把数字翻译成字符串
题目描述给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例 1:输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是"bccfi", “bwfi”, “bczi”, “mcfi"和"mzi”分析本题是斐波那契数列的变型题,主要思路就是将数字先转化为字符串,然后按照将字符串往前退一个位置和往前退两原创 2020-08-01 10:17:14 · 103 阅读 · 0 评论 -
头条面试题:统计有序数组里平方和的数目
题目描述给你一个有序整数数组,数组中的数可以是正数、负数、零,请实现一个函数,这个函数返回一个整数:返回这个数组所有数的平方值中有多少种不同的取值。举例:nums = {-1,1,1,1},那么你应该返回的是:1。因为这个数组所有数的平方取值都是1,只有一种取值。nums = {-1,0,1,2,3}你应该返回4,因为nums数组所有元素的平方值一共4种取值:1,0,4,9思路方法1 暴力破解直接计算每个数字的平方,然后和其他数字的数字的平方进行对比,并进行统计。时间复杂度为O(n)O(n)原创 2020-07-23 00:18:52 · 616 阅读 · 1 评论 -
使用c++实现二叉树的重建
问题定义:输入一个二叉树的前序和中序的字符串序列,输出重建二叉树之后的后序遍历结果。分析:先根据二叉树的前序和中序的序列进行重建二叉树,然后再进行使用递归进行后续遍历二叉树。示例代码:#include <iostream>using namespace std;//首先定义一个结构体struct Node{ struct Node* left; stru...原创 2020-05-01 14:51:49 · 578 阅读 · 1 评论