C++ LeeCode题目:比特位计数和买卖股票的最佳时机
目录
- 一、比特位计数
- 一、题目
- 二、代码
- 二、买卖股票的最佳时机
- 一、题目
- 二、代码
- 总结
一、比特位计数
一、题目
二、代码
class Solution { public: vector<int> countBits(int n) { vector<int> num; for(int i=0;i<=n;i++){//遍历[0,n],计算每个值对应二进制1的个数 num.push_back(countOne(i)); } return num; } public: int countOne(int x){//计算当前十进制数转换为二进制后1的个数 if (x==0) return 0; else if (x==1) return 1; else if(x/2>0&&x/2<1){//如果当前为最后的商时 return 1; }else{ return countOne(x/2) + x%2; } } };
二、买卖股票的最佳时机
一、题目
二、代码
class Solution { public: int maxProfit(vector<int>& prices) {//动态规划 int profit = 0;//最大利润 int enter = prices[0];//当前股票的进价 for(int i=1;i<prices.size();i++) { if(enter>prices[i]){//当前进价更低时,修改进价,保留之前的最大利润值 enter = prices[i]; }else if(profit<prices[i] - enter){//当前卖出获取的利润较高时,修改利润值,保留之前的最小进价 profit = prices[i] - enter; } } return profit; } };
总结
本篇文章就到这里了,希望能够给您带来帮助,也希望您能够多多关注我们的更多内容!
相关推荐
-
C++实现蓝桥杯竞赛题目---搭积木
小明对搭积木非常感兴趣.他的积木都是同样大小的正立方体. 在搭积木时,小明选取 m 块积木作为地基,将他们在桌子上一字排开,中间不留空隙,并称其为第0层. 随后,小明可以在上面摆放第1层,第2层,--,最多摆放至第n层.摆放积木必须遵循三条规则 规则1:每块积木必须紧挨着放置在某一块积木的正上方,与其下一层的积木对齐: 规则2:同一层中的积木必须连续摆放,中间不能留有空隙: 规则3:小明不喜欢的位置不能放置积木. 其中,小明不喜欢的位置都被标在了图纸上.图纸共有n行,从下至上的每一行分别对应积木
-
C++有符号和无符号之间的转换问题
先来看一个程序: #include<iostream> int main() { unsigned a=5; int b=-10; std::cout<<b+b<<std::endl;//正常输出 std::cout<<a+b<<std::endl; return 0; } 打印:-20 4294967291 -20正常打印我们都知道,但当一个有符号和一个无符号之间的数进行相加减会发生什么呢? 是这样的:a+b,首先把负数转换为无符号数,然后在进
-
C++入门笔记之std::vector容器详解
目录 前言 1. vector的构造函数原型: 2. vector的赋值函数原型: 3. vector的容量和大小函数原型: 4. vector的插入和删除函数原型: 5. vector的存取操作函数原型: 6. vector的呼唤容器函数原型: 总结 前言 vector实质是C++的一个类,与数组很相似,但是vector的优势是可以动态扩展,不需要考虑其内存大小. 定义: 向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container).跟任意其它类型容器一样,它
-
C++中nullptr 和 NULL 的区别及用法
1. 为什么会有nullptr的出现 目的:nullptr的出现主要是为了替代NULL. 那么,为什么要替代NULL呢? 在NULL的定义中存在会有2种方式,有的编译器会将NULL定义成0,有的编译器会将NULL定义成((void*)0). 那么,这两种定义方式会对c++有什么区别呢? 在c++中不允许( void* )隐式的转成其他类型,在某些编译器把NULL定义成((void*)0)的情况下,当你定义变量去赋值NULL时候,NULL就会变定义为0. 另外,这种问题也会对c++的重载特性造成混
-
C++实现二分法的一些细节(常用场景)
二分法是在一个排好序的序列(数组,链表等)中,不断收缩区间来进行目标值查找的一种算法,下面我们就来探究二分法使用的一些细节,以及常用的场景: 寻找一个数:寻找左侧边界:寻找右侧边界. 一.二分法的通用框架 int binarySearch(vector<int>& nums, int target){ int left=0, right=nums.size(); while(left < right) { int mid=(left+right)/2; if(nums[mid]
-
C++ LeeCode题目:比特位计数和买卖股票的最佳时机
目录 一.比特位计数 一.题目 二.代码 二.买卖股票的最佳时机 一.题目 二.代码 总结 一.比特位计数 一.题目 二.代码 十进制转二进制-百度百科 class Solution { public: vector<int> countBits(int n) { vector<int> num; for(int i=0;i<=n;i++){//遍历[0,n],计算每个值对应二进制1的个数 num.push_back(countOne(i)); } return num; }
-
python数据结构leetcode338比特位计数算法
目录 一.题目内容 示例 1: 示例 2: 进阶: 二.解题思路 三.代码 一.题目内容 给定一个非负整数 num.对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回. 示例 1: 输入: 2 输出: [0,1,1] 示例 2: 输入: 5 输出: [0,1,1,2,1,2] 进阶: 给出时间复杂度为O(n*sizeof(integer))的解答非常容易.但你可以在线性时间O(n)内用一趟扫描做到吗? 要求算法的空间复杂度为O(n). 你能进
-
python买卖股票的最佳时机(基于贪心/蛮力算法)
开始刷leetcode算法题 今天做的是"买卖股票的最佳时机" 题目要求 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票). 看到这个题目 最初的想法是蛮力法 通过两层循环 不断计算不同天之间的利润及利润和 下面上代码 class Solution(object): def maxProfit(self, pri
-
基于java计算买卖股票的最佳时机
这篇文章主要介绍了基于java计算买卖股票的最佳时机,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 问题: 可以将问题转化为如下图所示,即求多个累计的收入差 分析: 如果当前位置i的价格比i+1的价格高,则当前不是买入点,则继续判断下一个位置, 如果当前位置i的价格比i+1的价格低,并且i+1仍比i+1+1低,则在当前位置买入,知道i+n比i+n+1大时,卖出. 继续下一轮判断 package com.example.demo; public
-
C++实现LeetCode(121.买卖股票的最佳时间)
[LeetCode] 121.Best Time to Buy and Sell Stock 买卖股票的最佳时间 Say you have an array for which the ith element is the price of a given stock on day i. If you were only permitted to complete at most one transaction (ie, buy one and sell one share of the sto
-
C++实现LeetCode(188.买卖股票的最佳时间之四)
[LeetCode] 188.Best Time to Buy and Sell Stock IV 买卖股票的最佳时间之四 Say you have an array for which the ith element is the price of a given stock on day i. Design an algorithm to find the maximum profit. You may complete at most k transactions. Note: You m
-
JavaScript股票的动态买卖规划实例分析下篇
目录 1. 最佳买卖股票时机含冷冻期 题目描述 题解 2. 买卖股票的最佳时机 III 题目描述 题解 1. 最佳买卖股票时机含冷冻期 题目描述 给定一个整数数组prices,其中第prices[i]表示第i天的股票价格 . 设计一个算法计算出最大利润.在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票): 卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天). 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票). 示例 1: 输入: prices = [
-
JavaScript股票的动态买卖规划实例分析上篇
目录 1. 买卖股票的最佳时机 题目描述 题解 2. 买卖股票的最佳时机 II 题目描述 题解 3. 买卖股票的最佳时机含手续费 题目描述 题解 1. 买卖股票的最佳时机 题目描述 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格. 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票.设计一个算法来计算你所能获取的最大利润. 返回你可以从这笔交易中获取的最大利润.如果你不能获取任何利润,返回 0 . 示例 1: 输
-
C++实现LeetCode数组练习题
目录 1.存在重复元素 2.最大子序和 3.两数之和 4.合并两个有序数组 5.两个数组的交集II 6.买卖股票的最佳时机 7.杨辉三角 8.重塑矩阵 9.有效的数独 10.矩阵置零 总结 1.存在重复元素 排序数组,之后遍历是否有重复的元素 public boolean containsDuplicate(int[] nums) { Arrays.sort(nums); for(int i=1;i<nums.length;i++){ if(nums[i-1]==nums[i]){ return
-
Java通过动态规划设计股票买卖最佳时机
目录 买卖股票的最佳时机 动态规划 买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格.你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票.设计一个算法来计算你所能获取的最大利润.返回你可以从这笔交易中获取的最大利润.如果你不能获取任何利润,返回 0 . 示例: 链接:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock 动态规划
随机推荐
- AngularJS框架中的双向数据绑定机制详解【减少需要重复的开发代码量】
- 使用脚本实现故障时自动重启Apache
- 批处理(bat)实现全盘搜索指定文件获取其完整路径方法大全
- 浅析final,finally,finalize 的区别
- Python实现堆排序的方法详解
- JavaScript地理位置信息API
- js每次Title显示不同的名言
- python使用multiprocessing模块实现带回调函数的异步调用方法
- Android编程实现播放音频的方法示例
- Android实现带有边框的ListView和item的方法
- 简单的实现点击箭头图片切换的js代码
- Ruby中类变量和实例变量的比较
- MySQL四种事务隔离级别详解
- javascript中的正则表达式使用指南
- 基于jquery的滚动新闻列表
- Node.js Express 框架 POST方法详解
- Windows 2003域更名工具
- springboot-controller的使用详解
- WPF实现图片合成或加水印的方法【2种方法】
- spring 定时任务@Scheduled详解