剑指 Offer 41-50
剑指 Offer 42. 连续子数组的最大和
难度简单102收藏分享切换为英文关注反馈
输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。
要求时间复杂度为O(n)。
示例1:
输入: nums = [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
提示:
1 <= arr.length <= 10^5
-100 <= arr[i] <= 100
class Solution {
public:int maxSubArray(vector<int>& nums) {int n=nums.size();vector<int> dp(n+1);dp[0]=nums[0];int maxn=dp[0];for(int i=1;i<=n-1;i++){dp[i]=max(dp[i-1]+nums[i],nums[i]);maxn=max(dp[i],maxn);}return maxn;}
};
剑指 Offer 43. 1~n整数中1出现的次数
难度中等74收藏分享切换为英文关注反馈
输入一个整数 n
,求1~n这n个整数的十进制表示中1出现的次数。
例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。
示例 1:
输入:n = 12 输出:5
示例 2:
输入:n = 13 输出:6
https://leetcode-cn.com/problems/1nzheng-shu-zhong-1chu-xian-de-ci-shu-lcof/solution/mian-shi-ti-43-1n-zheng-shu-zhong-1-chu-xian-de-2/
跳过不会 哭
剑指 Offer 44. 数字序列中某一位的数字
难度中等53收藏分享切换为英文关注反馈
数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。
请写一个函数,求任意第n位对应的数字。
示例 1:
输入:n = 3 输出:3
示例 2:
输入:n = 11 输出:0
跳过 无语
剑指 Offer 45. 把数组排成最小的数
难度中等80收藏分享切换为英文关注反馈
输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
示例 1:
输入:[10,2]
输出: "102"
示例 2:
输入:[3,30,34,5,9]
输出: "3033459"
class Solution {
public:string minNumber(vector<int>& nums) {
// 把数字转成字符串vector<string>strs;string ans;for(int i = 0; i < nums.size(); i ++){strs.push_back(to_string(nums[i]));}sort(strs.begin(), strs.end(), [](string& s1, string& s2){return s1 + s2 < s2 + s1;});for(int i = 0; i < strs.size(); i ++)ans += strs[i];return ans;}
};
引用传递不需要调用构造函数去构造函数的局部变量
剑指 Offer 46. 把数字翻译成字符串
难度中等116收藏分享切换为英文关注反馈
给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。
示例 1:
输入: 12258
输出: 5
解释: 12258有5种不同的翻译,分别是"bccfi", "bwfi", "bczi", "mcfi"和"mzi"
class Solution {
public:int translateNum(int num) {string src = to_string(num);int p = 0, q = 0, r = 1;for (int i = 0; i < src.size(); ++i) {p = q; q = r; r = 0;r += q;if (i == 0) {continue;}auto pre = src.substr(i - 1, 2);if (pre <= "25" && pre >= "10") {r += p;}}return r;}
};
剑指 Offer 47. 礼物的最大价值
难度中等56收藏分享切换为英文关注反馈
在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?
示例 1:
输入:[[1,3,1],[1,5,1],[4,2,1] ]
输出:12
解释: 路径 1→3→5→2→1 可以拿到最多价值的礼物
class Solution {
public:int maxValue(vector<vector<int>>& grid) {int n=grid.size();int m=grid[0].size();for(int i=1;i<n;i++){grid[i][0]+=grid[i-1][0];}for(int j=1;j<m;j++){grid[0][j]+=grid[0][j-1];}for(int i=1;i<n;i++){for(int j=1;j<m;j++){grid[i][j]=max(grid[i-1][j],grid[i][j-1])+grid[i][j];}}return grid[n-1][m-1];}
};
剑指 Offer 48. 最长不含重复字符的子字符串
难度中等70收藏分享切换为英文关注反馈
请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。
示例 1:
输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其
长度为 3。
示例 2:
输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b"
,所以其长度为 1。
示例 3:
输入: "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是"wke"
,所以其长度为 3。请注意,你的答案必须是 子串 的长度,"pwke"
是一个子序列,不是子串。
提示:
s.length <= 40000
class Solution {
public:int lengthOfLongestSubstring(string s) {//滑动窗口unordered_map<char,int> window;int ans=0;int left=0,right=0;while(right<s.size()){char c=s[right];right++;window[c]++;//收缩while(window[c]>1){char b=s[left];left++;window[b]--;}ans=max(ans,right-left);}return ans;}
};
剑指 Offer 49. 丑数
难度中等56收藏分享切换为英文关注反馈
我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。
示例:
输入: n = 10
输出: 12
解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12
是前 10 个丑数。
// 1, 2, 3, 4, 5, 6, 8, 9, 10, 12
class Solution {
public:int nthUglyNumber(int n) {vector<int> dp(n, 0);dp[0] = 1;int p2 = 0, p3 = 0, p5 = 0;for (int i = 1; i < n; i++) {dp[i] = min(min(dp[p2] * 2, dp[p3] * 3), dp[p5] * 5);if (dp[i] == dp[p2] * 2)p2++;if (dp[i] == dp[p3] * 3)p3++;if (dp[i] == dp[p5] * 5)p5++;}return dp[n - 1];}
};
剑指 Offer 50. 第一个只出现一次的字符
难度简单39收藏分享切换为英文关注反馈
在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。
示例:
s = "abaccdeff" 返回 "b"s = "" 返回 " "
class Solution {
public:char firstUniqChar(string s) {int a[26] = {0};if(s == "") return ' ';for(int i = 0; i < s.size(); i++){int b = s[i] - 'a';a[b] += 1;}for(int i = 0; i < s.size(); i++){int b = s[i] - 'a';if(a[b] == 1) return s[i];}return ' ';}
};
剑指 Offer 41-50相关推荐
- 【LeetCode】剑指 Offer 41. 数据流中的中位数
[LeetCode]剑指 Offer 41. 数据流中的中位数 文章目录 [LeetCode]剑指 Offer 41. 数据流中的中位数 package offer;import java.util. ...
- 【LeetCode笔记】剑指Offer 41. 数据流中的中位数(Java、堆、优先队列、知识点)
文章目录 题目描述 知识点 1. 优先队列 2. Java 中 queue 的 offer.poll 等区别 思路 && 代码 二刷 打卡第十一天- 题目描述 虽然但是,这是一道很ni ...
- 《剑指 Offer I》刷题笔记 41 ~ 50 题
<剑指 Offer I>刷题笔记 41_50 排序(中等) 41. 最小的k个数# _解法1:排序 API + 数组复制 API 42. 数据流中的中位数 _解法1:暴力 搜索和回溯算法( ...
- 剑指offer第二版答案详细版(带详细解题思路)
1.滑动窗口的最大值(剑指offer原59题) 解题思路:其实是一个队列的问题,用一个队列去维护当前窗口中的所有元素:首先将超出窗口中的队头元素先删掉,然后将新的元素插入当前窗口中,插入时要判断新插入 ...
- leetcode 打印_剑指 Offer 总结 - leetcode 剑指offer系列
剑指 Offer 系列完结撒花!! 本篇文章是对整个系列的精华总结, 对系列的每篇文章进行了分类, 并用一句话概括每道题的思路, 方便大家理解和记忆, 当然也包含原文完整链接供大家参考 总的来说, 写 ...
- C#LeetCode刷题-剑指Offer
本文由 比特飞 原创发布,欢迎大家踊跃转载. 转载请注明本文地址:C#LeetCode刷题-剑指Offer | .Net中文网. C#LEETCODE刷题概述 概述 所有LeetCode剑指Offer ...
- 《剑指 Offer》题目汇总
文章目录 1. 数组 2. 链表 3. 栈和队列 4. 哈希表 5. 字符串 6. 树 7. 堆 8. 回溯和深度优先搜索 9. 递归和循环 10. 双指针 11. 动态规划 12. 贪心算法 13. ...
- LeetCode力扣(剑指offer 41-68)
目录 剑指 Offer 41. 数据流中的中位数 剑指 Offer 42. 连续子数组的最大和 剑指 Offer 43. 1-n 整数中 1 出现的次数 剑指 Offer 44. 数字序列中某一位的数 ...
- 剑指offer (From Leetcode) 汇总
剑指 Offer 03. 数组中重复的数字 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知 ...
- 算法题解(剑指Offer篇)
文章目录 栈与队列(简单) *剑指 Offer 09. 用两个栈实现队列 - 12.27 剑指 Offer 30. 包含min函数的栈 - 12.27 链表(简单) *剑指 Offer 06. 从尾到 ...
最新文章
- idea log 不输出error_还在使用console.log()吗?Bunyan:一个简单易用的JS日志框架
- Windows7 Scrapy框架建立
- operate XML file (Open,Insert)
- 特征层次分析、视觉特征语义探索(微调+预训练)
- Sql Server2008——远程过程调用失败
- java第五章 多线程_java多线程编程核心技术——第五章总结
- 使用Python和MetaTrader在5分钟内开始构建您的交易策略
- 电大计算机网考选择题多少分,2016年度电大计算机网考选择题及标准答案.doc
- JS:1.什么是JavaScript?
- Android开源项目推荐之「图片加载到底哪家强」
- 阿里、京东、拼多多电商三巨头财报大比拼:拼多多用户数上拼了 京东营收超过阿里...
- postgresql磁盘空间清理
- 围成面积(信息学奥赛一本通 - T1359)
- HTML5Point 如何去版权图片?
- 活性污泥法生活污水处理设备的参数详解
- 小程序学习历程(二):注册小程序测试号
- 日常开发中,你需要掌握的git使用报错解决
- 【AI Data Science】第 1 章分析性思维与 人工智能驱动的企业
- 罗切斯特大学计算机博士,罗切斯特大学生物博士排名,千万得慎重点看清
- 【分布式】分布式环境下如何保证数据库和缓存的双写一致性?看完我明白了!!
热门文章
- 电网风险、风险评估、风光不确定性 考虑蒙特卡洛考虑风光不确定性的配电网运行风险
- 和风天气 (简易版)
- 化工厂人员定位保障安全管理
- win10杀毒防护已经关闭了还是删除文件解决方法
- js写给定k个字符串数组,从这k个数组中任意取一个字符串,按顺序拼接,列出所有可能的字符串组合。(不要使用库方法)
- 一点还算不郁闷的郁闷的事
- 腾讯云数据库联手宇信科技发布联合方案,全面助力金融科技安全可控
- 从零开始构建一个高可靠的RabbitMQ镜像集群
- 用chrome按F12抓包 页面跳转POST一瞬间就闪没了
- Nautre综述:鸟枪法宏基因组-从取样到数据分析(1)2万字带你系统入门宏基因组实验和分析...