day12 13-牛客67道剑指offer-JZ83、70、63、47、48、46、21、81

1. JZ83 剪绳子(进阶版)

在这里插入图片描述

class Solution {
public:int jumpFloorII(int number) {if(number <= 1) return number;int temp = 1;int res = 0;/*2级台阶 23级台阶 44级台阶 65级台阶 16*/for(int i=2; i<=number; i++){res = 2 * temp;temp = res;}return res;}
};

2. JZ70 矩形覆盖

在这里插入图片描述
在这里插入图片描述
斐波那契鳄数列的另外一种形式,关注长就好,高永远是2

class Solution {
public:int rectCover(int number) {if(number <= 2) return number;int len1 = 1;int len2 = 2;int res = 0;for(int i=3; i<=number; i++){res = len1 + len2;len1 = len2;len2 = res;}return res;}
};

3. JZ63 买卖股票的最好时机(一)

在这里插入图片描述

class Solution {
public:int maxProfit(vector<int>& prices) {vector<vector<int>> dp(prices.size(), vector<int>(2,0));/*dp[i][]-第i天的收益 两种状态 0-不持股 1-持股dp[i][0]不持股收益,要么前一天就没有股票,今天也不买股票,收益不变;要么前一天有股票,今天卖出股票,收益加上卖出的钱dp[i][1]持股收益,要么前一天持有股票,今天不卖,收益不变;要么前一天没有股票,今天买入股票,收益减去买股票的钱*/dp[0][0] = 0;dp[0][1] = -prices[0];for(int i=1; i<prices.size(); i++){dp[i][0] = max(dp[i-1][0], dp[i-1][1] + prices[i]);dp[i][1] = max(dp[i-1][1], -prices[i]);}//最后一天不持股,到该天为止的最大收益return dp[prices.size()-1][0];}
};

4. JZ47 礼物的最大价值

在这里插入图片描述
在这里插入图片描述

class Solution {
public:int maxValue(vector<vector<int> >& grid) {int m = grid.size();        //行数int n = grid[0].size();     //列数vector<vector<int>> dp(m, vector<int>(n, 0));dp[0][0] = grid[0][0];//第一列只能来自上方for(int i=1; i<m; i++)dp[i][0] = dp[i-1][0] + grid[i][0];//第一行只能来自左边for(int j=1; j<n; j++)dp[0][j] = dp[0][j-1] + grid[0][j];for(int i=1; i<m; i++){for(int j=1; j<n; j++){dp[i][j] = max(dp[i-1][j], dp[i][j-1]) + grid[i][j];}}return dp[m-1][n-1];}
};

使用原来的grid数组

5. JZ48 最长不含重复字符的子字符串

在这里插入图片描述

滑动窗口+哈希

class Solution {
public:int lengthOfLongestSubstring(string s) {//滑动窗口+哈希unordered_map<char, int> hashmap;int result = 0;for(int left=0, right=0; right<s.size(); right++){hashmap[s[right]]++;//统计频率//出现次数大于1,则窗口内有重复 while(hashmap[s[right]] > 1){hashmap[s[left]]--;//同时减去该字符的出现次数 把较早出现的字符移出窗口left++;//窗口左移}result = max(result, right - left + 1);}return result;}
};

动态规划

在这里插入图片描述

class Solution {
public:int lengthOfLongestSubstring(string s) {//动态规划if(s.size() <= 1) return s.size();int result = 0;vector<int> dp(s.size(), 0);dp[0] = 1;for(int j=1; j<s.size(); j++){int i = j - 1;//i就是距离j最近的相同字符位置while( j >= 0 && s[i] != s[j]) i--;//if(i<0) dp[j] = dp[j-1]+1;if(dp[j-1] < j-i) dp[j] = dp[j-1] + 1;//第i个字符不在dp[j-1]的区间之内else dp[j] = j-i;//第i个字符在dp[i-1]的区间之内if(dp[j] > result) result = dp[j];}return result;}
};

6. JZ46 把数字翻译成字符串

在这里插入图片描述
三种特殊情况剔除,0、10和20、0的前面不是1和2
动态规划,两种状态,1-9只有一种译码方案;10-19,21-26都有两种译码方案。

class Solution {
public:int solve(string nums) {//排除0if(nums == "0") return 0;//排除只有一种可能的10 和 20if(nums == "10" || nums == "20") return 1;//当0的前面不是1或2时,无法译码,0种for(int i = 1; i < nums.size(); i++){ if(nums[i] == '0')if(nums[i - 1] != '1' && nums[i - 1] != '2')return 0;}vector<int> dp(nums.size()+1, 1);for(int i=2; i<=nums.size(); i++){//在11-19,21-26之间的情况if((nums[i-2] == '1' && nums[i-1] != '0') || (nums[i-2] == '2' && nums[i-1] > '0' && nums[i-1] < '7'))dp[i] = dp[i-2] + dp[i-1];else dp[i] = dp[i-1];//在1-9 之间的情况}return dp[nums.size()];//size()是包括最后的\0 length()就是字符个数}
};

7. JZ21 调整数组顺序使奇数位于偶数前面(一)

在这里插入图片描述
插入排序思想,记录已经是奇数的位置下标(视作为有序区域),然后向后遍历,一经发现是奇数则进行“插入排序”,然后有序区下标加1。

class Solution {
public:vector<int> reOrderArray(vector<int>& array) {//记录已经是奇数的位置 要插入奇数的位置 i前面的数字都是排好序的int oddindex=0;        int temp = 0;for(int i=0; i<array.size(); i++){temp = array[i];//i 遇到奇数 先保存这个值,然后将 【i, j-1】数组后移动if((array[i] & 1) == 1){temp = array[i];for(int j=i-1; j>=oddindex; --j)array[j+1] = array[j];//再把 遇到的奇数插在 oddindex位置array[oddindex++] = temp;}}return array;}
};

8. JZ81 调整数组顺序使奇数位于偶数前面(二)

在这里插入图片描述
这个题和(一)的区别就是,数字的顺序可以不固定,所以就是两个指针遍历,奇数位是偶数与偶数位是奇数的两个数字交换就好啦。

class Solution {
public:vector<int> reOrderArrayTwo(vector<int>& array) {int left = 0;                   //偶数位 要求是奇数int right = array.size()-1;     //奇数位 要求是偶数while(left < right){while(left < right && (array[left] & 1) == 1) left++;//偶数位是奇数 跳过while(left < right && (array[right] & 1) == 0) right--;swap(array[left], array[right]);}return array;}
};

这种就是偶数放在前面,奇数放在后面

class Solution {
public:vector<int> reOrderArrayTwo(vector<int>& array) {int left = 0, right = array.size()-1;while(left < right){while(left < right && (array[left] & 1) != 1) left++;//偶数位是偶数while(left < right && (array[right] & 1) != 0) right--;swap(array[left], array[right]);}return array;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/94269.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker 安装elasticsearch、kibana

下载es镜像 docker pull elasticsearch 启动es容器 docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.typesingle-node" -e ES_JAVA_OPTS"-Xms512m -Xmx512m" -d elasticsearch 验证es界面访问 ​​​​​http://节点ip:9200/ ​…

应用在汽车前照灯系统中的环境光传感芯片

为了保证行车照明的安全性和方便性&#xff0c;减轻驾驶员的劳动强度。近年来&#xff0c;出现了许多新的照明控制系统&#xff0c;例如用于日间驾驶的自动照明系统、光束调节系统、延迟控制等。尤其是汽车自适应前照灯系统&#xff0c;它是一种能够自动改变两种以上的光型以适…

零售行业供应链管理核心KPI指标(一) – 能力、速度、效率和成本

有关零售行业供应链管理KPI指标的综合性分享&#xff0c;涉及到供应链能力、速度、效率和成本总共九大指标&#xff0c;是一个大框架&#xff0c;比较核心也比较综合。 衡量消费品零售企业供应链管理效率和水平的核心KPI通常有哪些&#xff1f; 图片来源-派可数据&#xff08;…

SpringBoot 操作Redis、创建Redis文件夹、遍历Redis文件夹

文章目录 前言依赖连接 RedisRedis 配置文件Redis 工具类操作 Redis创建 Redis 文件夹查询数据遍历 Redis 文件夹 前言 Redis 是一种高性能的键值存储数据库&#xff0c;支持网络、可基于内存亦可持久化的日志型&#xff0c;而 Spring Boot 是一个简化了开发过程的 Java 框架。…

【ES6】—解构赋值

一、定义 解构赋值&#xff1a;解构赋值就是一种模式的匹配&#xff0c;只要等号两边的模式完全相同的&#xff0c;那么左边的变量就会被赋值对应右边的值 二、数组的解构赋值 PS&#xff1a;数组解构赋值时&#xff0c;是通过索引的唯一性赋值的 1. 一维数组解构赋值 (1)…

《Go 语言第一课》课程学习笔记(六)

变量声明&#xff1a;静态语言有别于动态语言的重要特征 变量所绑定的内存区域是要有一个明确的边界的。也就是说&#xff0c;通过这样一个变量&#xff0c;我们究竟可以操作 4 个字节内存还是 8 个字节内存&#xff0c;又或是 256 个字节内存&#xff0c;编程语言的编译器或解…

nginx部署时http接口正常,ws接口404

可以这么配置 map $http_upgrade $connection_upgrade {default upgrade; close; }upstream wsbackend{server ip1:port1;server ip2:port2;keepalive 1000; }server {listen 20038;location /{ proxy_http_version 1.1;proxy_pass http://wsbackend;proxy_redirect off;proxy…

FreeRTOS源码分析-12 低功耗管理

目录 1 STM32低功耗管理概念及应用 1.1睡眠模式 1.2 停止模式 1.3 待机模式 2 Tickless低功耗管理 2.1 Tickless低功耗模式介绍 2.2 FreeRTOS低功耗模式配置 2.3 FreeRTOS低功耗模式应用 3 低功耗管理实际项目开发 3.1 低功耗设计必须要掌握的硬件知识 …

LangChain-ChatGLM在WIndows10下的部署

LangChain-ChatGLM在WIndows10下的部署 参考资料 1、LangChain ChatGLM2-6B 搭建个人专属知识库中的LangChain ChatGLM2-6B 构建知识库这一节&#xff1a;基本的逻辑和步骤是对的&#xff0c;但要根据Windows和现状做很多调整。 2、没有动过model_config.py中的“LORA_MOD…

【Docker】 使用Docker-Compose 搭建基于 WordPress 的博客网站

引 本文将使用流行的博客搭建工具 WordPress 搭建一个私人博客站点。部署过程中使用到了 Docker 、MySQL 。站点搭建完成后经行了发布文章的体验。 WordPress WordPress 是一个广泛使用的开源内容管理系统&#xff08;CMS&#xff09;&#xff0c;用于构建和管理网站、博客和…

LeetCode235. 二叉搜索树的最近公共祖先

235. 二叉搜索树的最近公共祖先 文章目录 [235. 二叉搜索树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/)一、题目二、题解方法一&#xff1a;递归方法二&#xff1a;迭代 一、题目 给定一个二叉搜索树, 找到该树中两个指定…

故障011:dmap服务缺失libnsl.so修复

故障011&#xff1a;dmap服务缺失libnsl.so修复 1. 问题描述2. 解决方法2.1 初步分析2.2 动手实操2.2.1 模糊搜索大法2.2.2 僵桃代李大法 DM技术交流QQ群&#xff1a;940124259 1. 问题描述 今天遇二期XC环境&#xff0c;达梦DM 7.6的DmAPService备份辅助进程服务无法启动&a…

Python 函数

Built-in Functions — Python 3.11.4 documentation

C++基础语法——继承

1.继承是什么&#xff1f; 继承是一种面向对象编程的概念&#xff0c;它允许一个类&#xff08;称为子类或派生类&#xff09;从另一个类&#xff08;称为基类或父类&#xff09;继承属性和方法。继承使得子类能够使用基类已有的代码&#xff0c;并且可以在此基础上进行扩展或修…

CentOS系统环境搭建(十五)——CentOS安装Kibana

centos系统环境搭建专栏&#x1f517;点击跳转 关于Elasticsearch的安装请看CentOS系统环境搭建&#xff08;十二&#xff09;——CentOS7安装Elasticsearch。 CentOS安装Kibana 文章目录 CentOS安装Kibana1.下载2.上传3.解压4.修改kibana配置文件5.授予es用户权限6.kibana 后台…

win下qwidget全屏弹窗后其他窗口鼠标样式无法更新的问题

在win平台下&#xff0c;实现截取选桌面执行推理功能&#xff0c;用一个qwidget(j对象名为m_selectWidget)来显示选取范围的边框&#xff0c;但这个qwidget显示后&#xff0c;其他窗口在他下面可以接受鼠标相应的事件&#xff0c;但原来的鼠标形状功能失效&#xff08;mac正常&…

Linux的基本权限(文件,目录)

文章目录 前言一、Linux权限的概念二、Linux权限管理 1.文件访问者分类2.文件类型和访问类型3.文件访问权限的相关设置方法三、目录的权限四、权限的总结 前言 Linux下一切皆文件&#xff0c;指令的本质就是可执行文件&#xff0c;直接安装到了系统的某种路径下 一、Linux权限的…

jenkins使用

安装插件 maven publish over ssh publish over ssh 会将打包后的jar包&#xff0c;通过ssh推送到指定的服务器上&#xff0c;&#xff0c;在jenkins中设置&#xff0c;推送后脚本&#xff0c;实现自动部署jar包&#xff0c;&#xff0c; 装了这个插件之后&#xff0c;可以在项…

数据结构--拓扑排序

数据结构–拓扑排序 AOV⽹ A O V ⽹ \color{red}AOV⽹ AOV⽹(Activity On Vertex NetWork&#xff0c;⽤顶点表示活动的⽹)&#xff1a; ⽤ D A G 图 \color{red}DAG图 DAG图&#xff08;有向⽆环图&#xff09;表示⼀个⼯程。顶点表示活动&#xff0c;有向边 < V i , V j …

Eigen 的简单使用 与 轨迹拟合代码的理解

工作中遇到一个问题&#xff0c;发到hmi的车辆引导线为斜的&#xff0c;有一说一&#xff0c;仔细看下这段代码&#xff0c;发现用到了Eigen库用来多项式曲线拟合&#xff0c;线性回归&#xff0c;矩阵向量计算等。 #include <iostream> #include <vector> #inclu…