1370. 上升下降字符串 难度简单83 给你一个字符串 s ,请你根据下面的算法重新构造字符串: 从 s 中选出 最小 的字符,将它 接在 结果字符串的后面。从 s 剩余字符中选出 最小 的字符,且该字符比上一个添加的字符大,将它 接在 结果字符串后面。重复步骤 2 ,直到你没法从 s 中选择字符。从 s 中选出 最大 的字符,将它 接在 结果字符串的后面。从 s 剩余字符中选出 最大 的字符,且该字符比上一个添加的字符小,将它 接在 结果字...
917. 仅仅反转字母 难度简单73 给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。 示例 1: 输入:"ab-cd" 输出:"dc-ba"示例 2: 输入:"a-bC-dEf-ghIj" 输出:"j-Ih-gfE-dCba"示例 3: 输入:"Test1ng-Leet=code-Q!" 输出:"Qedo1ct-eeLg=ntse-T!" 提示: S.length <= 10033 <= S[i].ASCIIcode <= 122 S 中不包含 \ or "双指针 class Solution { public:string rever...
11. Container With Most Waterclass Solution { public:int maxArea(vector<int>& height) {int ans = 0;int left = 0, right = height.size() - 1;while(left < right) {ans = max(ans, min(height[left], height[right]) * (right - left));if(height[left] > height[right]) right--;else left++;}return ans;} };
方法一:层序遍历 解题思路: 和第116题一模一样,其实,用队列queue更简单一些,不用将顺序倒来倒去。通过使用队列的长度信息queue.size(),可以只需要一个队列就能做到层序遍历。/* // Definition for a Node. class Node { public:int val;Node* left;Node* right;Node* next;Node() {}Node(int _val, Node* _left, Node* _right, Node* _next) {val = _val;left = _left;right = _right;next = _next;} }; */ class Solution {...
1.两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。示例 1: 输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。 示例 2: 输入:nums = [3,2,4], target = 6 输出:[1,2] 示例...
参考链接 https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/ 题目描述 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 解题思路 使用双指针,一个指针锁定要被替换的位置,另一个指针寻找不同的元素,放在第一个指针右边的位置。 代码 class Solutio...
//暴力 枚举宽 超时 /* 如果我们枚举「宽」,我们可以使用两重循环枚举矩形的左右边界以固定宽度 w, 此时矩形的高度 h,就是所有包含在内的柱子的「最小高度」,对应的面积为 w * h。 */ class Solution1 { public:int largestRectangleArea(vector<int>& heights) {int len = heights.size();int ans = 0;int minHeight;for(int i = 0;i<len;++i) {//枚举左边界minHeight = INT_MAX;for(int j = i;j<len;++j) {//枚举右边界minH...
目录 1、题目描述:2、思路:3、代码实现:(1)python代码:(2)C++代码: 4、总结:参考文献:1、题目描述:2、思路: 首先根据’/将path进行split,用res保存简化后需要的文件名,对于每个元素进行分类讨论: 如果是 . 或者 空字符串 则跳过;如果是.. 说明需要返回上一级,即弹出一个文件名,但是这里有一个细节需要注意,只有res非空的时候才能弹出,否则对于测试用例 /../不能通过,因为此时的res为空;如果是普通的文件名,则...
class Solution { public:void GetNextval(string t,int nextval[]){int j=0,k=-1;nextval[0]=-1;while (j<t.length()-1){if (k==-1 || t[j]==t[k]) { if(t[++j]!=t[++k]) nextval[j]=k;else nextval[j]=nextval[k];}else k=nextval[k]; }}int KMPIndex1(string s,string t){int nextval[t.length()],i=0,j=0;GetNextval(t,nextval);while (i<s.length()&&j<int(t.length())){if (j==-1||s[i]==t[j]){ ++i;++j; }else j=n...
class Solution { public:ListNode* swapPairs(ListNode* head) {if(head==nullptr||head->next==nullptr) return head;ListNode *l1=head,*l2=head->next;l1->next=l2->next;l2->next=l1;head=l2;while(1){if(l1->next)l2=l1->next;else break;if(l2->next)l2=l2->next;else break;(l1->next)->next=l2->next;l2->next=l1->next;l1->next=l2;l1=l2->next;}return head;} };第二次one-take,诶,诶嘿(喜 不过莫得意思。
[LeetCode]丑数 II&C++中priority_queue和unordered_set的使用 考虑到现实因素,LeetCode每日一题不再每天都写题解了(甚至有可能
class Solution { public:vector<vector<int>> threeSum(vector<int>& nums) {unordered_map<int, int> nums_map;//哈希表int si=nums.size(),ptr1=0,ptr2=si-1,t=0;//前后指针和第三个数vector<vector<int>> ans;//答案if(si<3) return ans;sort(nums.begin(), nums.end());//排序for(int i=0;i<=ptr2;i++){//做哈希表auto it=nums_map.find(nums[i]);if(it!=nums_map.end()) ++(it->second);else nums_map[nums[i]]=1;}while(ptr...
C++/Python描述 LeetCode 面试题 17.21. 直方图的水量??大家好,我叫亓官劼(q guān ji ),在GitHub & CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在GitHub & CSDN中写博客,唯一博客更新的地址为:亓官劼的博客 ,近期将逐渐同步刷题相关记录到GitHub:Algorithmic-learning-records,大多是本人的刷题记录,如果转载请附上原文地址,谢谢。由于学习工作的需要,算法刷题将会逐渐由C++向Python3过度,正在过...
第十九天 2021-3-27备战CCFCSP 刷题模块:CCF 202009 最终计划 AcWing 算法基础课程 每日一个视频AcWing 算法基础课程 每日多个算法模板CCF CSP 每日5道比赛真题 比赛技巧:如何改变输入输出流 #include <stdio.h>int main(){freopen("in.txt","r",stdin);freopen("out.txt","w",stdout);int x,y;scanf("%d%d",&x,&y);printf("%d %d",x,y); } CCF CSP:202009-1 枚举法,时间复杂度O(n) #include<iostream>using namespace std;con...
方法一:动态规划 class Solution { public:string longestPalindrome(string s) {int n=s.length();string ans="";bool dp[n][n];//动态规划表for(int i=n-1;i>-1;--i){for(int j=i;j<n;++j){//i是回文串头,j是尾if (j==i) //单字符是回文串dp[i][i]=true;else if(j==i+1) //双字符判断是否相等dp[i][i+1]=(s[i]==s[i+1]);else//多字符判断头尾是否相等以及后一位字符长度小2的串是否为回文串dp[i][j]=(dp[i+1][j-1]&&(s[i]==s[j...