labuladong日常刷题-差分数组 | LeetCode 1109航班预定统计 | 花式遍历 151反转字符串里的单词

本文主要是介绍labuladong日常刷题-差分数组 | LeetCode 1109航班预定统计 | 花式遍历 151反转字符串里的单词,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

差分数组–前缀和数组的升级

LeetCode 1109 航班预定统计 2024.1.1

  • 题目链接
  • labuladong讲解[链接]
    在这里插入图片描述
class Solution {
public:vector<int> corpFlightBookings(vector<vector<int>>& bookings, int n) {//构建航班人数数组,数组大小为n,初始化为0vector<int> people(n, 0);//将人数传入差分类中构造差分数组Diff diff(people);//遍历每条预定记录,从bookings[i][0]-1(与索引差1)开始人数增加,从bookings[i][1]位置人数减少至原来for(int i = 0; i < bookings.size(); i++){int from = bookings[i][0]-1;int to = bookings[i][1];int num = bookings[i][2];//更新差分数组,从bookings[i][0]-1(与索引差1)开始人数增加,从bookings[i][1]位置人数减少至原来diff.increment(from, to, num);}//更新people数组,需要初始化people[0]people[0] = diff.diffnum[0];for(int i = 1; i < n; i++)people[i] = people[i-1]+diff.diffnum[i];//返回更新后的数组return people;}class Diff{public:vector<int> diffnum;Diff(vector<int> people){diffnum = vector<int>(people.size(), 0);}void increment(int from, int to, int num){diffnum[from] += num;if(to < diffnum.size())diffnum[to] -= num;}};
};

花式遍历

LeetCode 151 反转字符串里的单词 2024.1.1

  • 题目链接
  • labuladong讲解[链接]
    在这里插入图片描述
class Solution {
public:string reverseWords(string s) {//用栈来实现/*stack<char> st;string str;for(int i = s.size()-1; i >= 0; i--){if(s[i] == ' ' && st.empty())continue;while(s[i] == ' ' && !st.empty()){str.push_back(st.top());st.pop();}if(s[i] == ' ')str.push_back(' ');            if(s[i] != ' ')st.push(s[i]);}while(!st.empty()){str.push_back(st.top());st.pop();}if(str[str.size()-1]  == ' ')str.pop_back();return str;*///先双指针移出不必要的空格,再整体反转,最后将每个单词反转即可得到答案//移除不必要空格int slow = 0;for(int i = 0; i < s.size(); i++){if(slow != 0 && s[i] != ' ')s[slow++] = ' ';while(i < s.size() && s[i] != ' ')s[slow++] = s[i++];}s.resize(slow);//整体反转reverse(s.begin(), s.end());//最后将每个单词反转即可得到答案int left = 0;for(int i = 0; i < s.size(); i++){if(s[i] == ' '){reverse(s.begin()+left, s.begin()+i);left = i + 1;}}reverse(s.begin()+left, s.end());return s;}
};

这篇关于labuladong日常刷题-差分数组 | LeetCode 1109航班预定统计 | 花式遍历 151反转字符串里的单词的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/560487

相关文章

哈希leetcode-1

目录 1前言 2.例题  2.1两数之和 2.2判断是否互为字符重排 2.3存在重复元素1 2.4存在重复元素2 2.5字母异位词分组 1前言 哈希表主要是适合于快速查找某个元素(O(1)) 当我们要频繁的查找某个元素,第一哈希表O(1),第二,二分O(log n) 一般可以分为语言自带的容器哈希和用数组模拟的简易哈希。 最简单的比如数组模拟字符存储,只要开26个c

hdu1496(用hash思想统计数目)

作为一个刚学hash的孩子,感觉这道题目很不错,灵活的运用的数组的下标。 解题步骤:如果用常规方法解,那么时间复杂度为O(n^4),肯定会超时,然后参考了网上的解题方法,将等式分成两个部分,a*x1^2+b*x2^2和c*x3^2+d*x4^2, 各自作为数组的下标,如果两部分相加为0,则满足等式; 代码如下: #include<iostream>#include<algorithm

hdu2241(二分+合并数组)

题意:判断是否存在a+b+c = x,a,b,c分别属于集合A,B,C 如果用暴力会超时,所以这里用到了数组合并,将b,c数组合并成d,d数组存的是b,c数组元素的和,然后对d数组进行二分就可以了 代码如下(附注释): #include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<que

hdu 1166 敌兵布阵(树状数组 or 线段树)

题意是求一个线段的和,在线段上可以进行加减的修改。 树状数组的模板题。 代码: #include <stdio.h>#include <string.h>const int maxn = 50000 + 1;int c[maxn];int n;int lowbit(int x){return x & -x;}void add(int x, int num){while

poj 3159 (spfa差分约束最短路) poj 1201

poj 3159: 题意: 每次给出b比a多不多于c个糖果,求n最多比1多多少个糖果。 解析: 差分约束。 这个博客讲差分约束讲的比较好: http://www.cnblogs.com/void/archive/2011/08/26/2153928.html 套个spfa。 代码: #include <iostream>#include <cstdio>#i

poj 3169 spfa 差分约束

题意: 给n只牛,这些牛有些关系。 ml个关系:fr 与 to 牛间的距离要小于等于 cost。 md个关系:fr 与 to 牛间的距离要大于等于 cost。 隐含关系: d[ i ] <= d[ i + 1 ] 解析: 用以上关系建图,求1-n间最短路即可。 新学了一种建图的方法。。。。。。 代码: #include <iostream>#include

leetcode-24Swap Nodes in Pairs

带头结点。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val = x; }* }*/public class Solution {public ListNode swapPairs(L

leetcode-23Merge k Sorted Lists

带头结点。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val = x; }* }*/public class Solution {public ListNode mergeKLists

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

hdu4267区间统计

题意:给一些数,有两种操作,一种是在[a,b] 区间内,对(i - a)% k == 0 的加value,另一种操作是询问某个位置的值。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import