avatar
文章
169
标签
38
分类
4

首页
归档
标签
分类
面试资料
首页
归档
标签
分类

面试资料

leetcode-6. Z 字形变换
发表于2024-03-11
Z字形变换将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下: 123P A H NA P L S I I GY I R 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"PAHNAPLSIIGYIR"。 请你实现这个将字符串进行指定行数变换的函数: 1string convert(string s, int numRows); 示例 1: 12输入:s = "PAYPALISHIRING", numRows = 3输出:"PAHNAPLSIIGYIR" 示例 2: 1234567输入:s = "PAYPALISHIRING", numRows = 4输出:"PINALSIGYAHRPI"解释:P I NA L S I GY A H RP I 示例 3: 12输入:s = ...
acwing-高精度加法
发表于2024-03-10|算法acwing
高精度加法给定两个正整数(不含前导 0),计算它们的和。 输入格式给定两个正整数(不含前导 00),计算它们的和。 输出格式共一行,包含所求的和。 数据范围1≤整数长度≤100000 这个算法用来计算大数之间的加法。 例:计算 567+28 用 a, b 两个字符串存储输入。a = 567, b = 28 为了将个位对齐,两个加数需要倒序存放在 A, B 两个整数数组中。 A = [7, 6, 5], B = [8, 2] 新建整数数组 C 保存结果,整型变量 t 保存进位,初始 t = 0. 将各个位上的数字相加,求出结果对应位上的数字和进位。 例如对个位计算: A[0] + B[0] = 7 + 8 = 15, 结果个位上是 5, 进位是 1. 所以C[0] = 5, 进位t = 1 最后把结果数组 C 中就保存了计算倒序结果,倒序输出就是答案 12345678910111213141516171819202122232425262728293031323334#include<iostream>#include<vector ...
leetcode-151. 反转字符串中的单词
发表于2024-03-10
反转字符串中的单词给你一个字符串 s ,请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。 示例 1: 12输入:s = "the sky is blue"输出:"blue is sky the" 示例 2: 123输入:s = " hello world "输出:"world hello"解释:反转后的字符串中不能存在前导空格和尾随空格。 示例 3: 123输入:s = "a good example"输出:"example good a"解释:如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。 这道题的关键就是去掉多余的空格。用双指针找出每个单词就可 ...
leetcode-14. 最长公共前缀
发表于2024-03-09|算法leetcode
最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1: 12输入:strs = ["flower","flow","flight"]输出:"fl" 示例 2: 123输入:strs = ["dog","racecar","car"]输出:""解释:输入不存在公共前缀。 以第一个字符串strs[0]为基准,逐个字符与其他字符串比较,直到找到不匹配的字符为止。 设置两层循环,第一层循环strs[0]的长度,第二层循环每一个字符串。 12345678910111213141516class Solution {public: string longestCommonPrefix(vector<string>& strs) { int n=strs.size(); if(!n) r ...
leetcode-58. 最后一个单词的长度
发表于2024-03-09|算法leetcode
最后一个单词的长度给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串 示例 1: 123输入:s = "Hello World"输出:5解释:最后一个单词是“World”,长度为5。 非常简单。倒序处理,注意最后的空格 12345678910111213class Solution {public: int lengthOfLastWord(string s) { int n=s.size()-1; int ans=0; while(s[n]==' ') n--; while(n>=0&&s[n]!=' '){ //第一次把n>=0这个判断条件放在&&后边导致报错,一定注意。 ans++; n--; } ...
leetcode-12. 整数转罗马数字
发表于2024-03-09|算法leetcode
整数转罗马数字罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 12345678字符 数值I 1V 5X 10L 50C 100D 500M 1000 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。 通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况: I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。 X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。 C 可以放在 D (500) 和 M (1000) 的左边,来表 ...
leetcode-13. 罗马数字转整数
发表于2024-03-06|算法leetcode
罗马数字转整形罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 12345678字符 数值I 1V 5X 10L 50C 100D 500M 1000 例如, 罗马数字 2 写做 II ,即为两个并列的 1 。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。 通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况: I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。 X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。 C 可以放在 D (500) 和 M (1000) 的左边,来 ...
leetcode-42. 接雨水
发表于2024-03-05|算法leetcode
接雨水给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 输入:height = [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 按列来计算,第i列接到的雨水等于min(i左边最大高度,i右边最大高度)-height[i]. 所以问题的关键就变成了求i左右两边的最大高度。这是一个非常简单的动态规划问题。 定义left数组,left[i]表示i左边最大高度(包括i,如果i左边最大高度就是height[i],则第i列接不到雨水,右边同理)。初始化left[0]=height[0] left[i]=max(left[i-1],height[i]) 定义right数组,right[i]表示i右边最大高度。 初始化right[n-1]=height[n-1] right[i]=max(right[i+1],height[i]) 注意: right数组必须从后往前遍历。第一 ...
acwing-数的三次方根
发表于2024-03-03|算法acwing
数的三次方根给定一个浮点数n,求它的三次方根 输入格式共一行,包含一个浮点数 n。 输出格式共一行,包含一个浮点数,表示问题的解。 注意,结果保留 6 位小数。 数据范围-10000<=n<=10000 注意符号类型为double型,所以边界问题很简单。 123456789101112131415161718192021#include<iostream>using namespace std;double square3(double n){ double l=-10000; double r=10000; while(r-l>1e-8){ double mid=(l+r)/2; if(mid*mid*mid<n) l=mid; else r=mid; } return l;}int main(){ double n; cin>>n; printf("%.6f\n",squar ...
leetcode-135. 分发糖果
发表于2024-02-27|算法leetcode
分发糖果n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求,给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。 相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目 。 初始化数组vector<int>t(n,1)存储每个孩子的糖果数量。 分两次遍历数组 从左到右遍历数组,使得右边孩子的评分数大于左边孩子评分数,则右边孩子糖果数比左边孩子多1。 从右到左遍历数组,如果左边孩子的评分数大于右边孩子评分数,则左边孩子糖果数等于max(t[i],t[i+1]+1)。 123456789101112131415161718class Solution {public: int candy(vector<int>& ratings) { int n=ratings.size(); vector<int>t(n,1); for(int i=1;i<n;i++){ ...
1…14151617
avatar
范小勤
文章
169
标签
38
分类
4
Follow Me
公告
This is my Blog
最新文章
验证二叉搜索树2025-02-26
寻找重复数2025-02-17
下一个排列2025-02-17
颜色分类2025-02-16
只出现一次的数字2025-02-16
分类
  • 八股文11
  • 算法155
    • acwing22
    • leetcode133
标签
区间和 Trie 二叉树 模拟 完全背包 DFS 位运算 BFS 链表 优先队列 二叉搜索树 拓扑排序 哈希 01背包 栈 双向链表 差分 图论 摩尔投票 双指针 贪心 单调队列 桶排序 kmp 滑动窗口 并查集 前缀积 矩阵 递归 归并排序 单调栈 高精度 记忆化搜索 集合 二分 前缀和 动态规划 快速排序
归档
  • 二月 202543
  • 一月 202554
  • 十二月 202414
  • 九月 20241
  • 四月 202418
  • 三月 202419
  • 二月 202420
网站资讯
文章数目 :
169
本站访客数 :
本站总访问量 :
最后更新时间 :
©2020 - 2025 By 范小勤
框架 Hexo|主题 Butterfly