首页 > 其他分享 >差分数组-leetcode1094

差分数组-leetcode1094

时间:2023-04-11 12:07:45浏览次数:48  
标签:capacity numPassengersi int System 差分 trips result 数组 leetcode1094

车上最初有 capacity 个空座位。车 只能 向一个方向行驶(也就是说,不允许掉头或改变方向

给定整数 capacity 和一个数组 trips , trip[i] = [numPassengersi, fromi, toi] 表示第 i 次旅行有 numPassengersi 乘客,接他们和放他们的位置分别是 fromi 和 toi 。这些位置是从汽车的初始位置向东的公里数。

当且仅当你可以在所有给定的行程中接送所有乘客时,返回 true,否则请返回 false

示例 1:

输入:trips = [[2,1,5],[3,3,7]], capacity = 4
输出:false

示例 2:

输入:trips = [[2,1,5],[3,3,7]], capacity = 5
输出:true

提示:

  • 1 <= trips.length <= 1000
  • trips[i].length == 3
  • 1 <= numPassengersi <= 100
  • 0 <= fromi < toi <= 1000
  • 1 <= capacity <= 105


思路:差分数组,对于区间频繁修改的数组


//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public boolean carPooling(int[][] trips, int capacity) {
        int n = 1000;
        int[] result = new int[n];
        for (int[] trip : trips) {
            int numPassengersi = trip[0];
            if (numPassengersi > capacity) {
                return false;
            }

            int start = trip[1] - 1;
            int end = trip[2] - 1 - 1;
            result[start] += numPassengersi;
            if (end + 1 < n) {
                result[end + 1] -= numPassengersi;
            }
        }

        for (int i = 0; i < 10; i++) {
            System.out.print(result[i] + "  ");
        }
        System.out.println();

        for (int i = 1; i < n; i++) {
            result[i] += result[i - 1];
        }

        for (int i = 0; i < 10; i++) {
            System.out.print(result[i] + "  ");
        }
        System.out.println();

        for (int i = 1; i < n; i++) {
            if (result[i] > capacity) {
                System.out.println(result[i] + "  " + capacity);
                return false;
            }
        }
        return true;


    }
}
//leetcode submit region end(Prohibit modification and deletion)

标签:capacity,numPassengersi,int,System,差分,trips,result,数组,leetcode1094
From: https://blog.51cto.com/u_12550160/6182942

相关文章

  • JavaScript 去除数组中重复的元素 得到新数组
    方法一:思路:准备一个新数组,将原数组中的元素一一放入新数组,放入之前判断该元素是否存在新数组中,不存在的话就直接存入新数组。functionuniqueArr(arr){ varnewArr=[]; for(leti=0;i<arr.length;i++){ if(newArr.indexOf(arr[i])==-1){ newArr.push(arr[i]); } } r......
  • kettle从入门到精通 第十一课 kettle javascript 解析json数组
    1、json步骤虽然可以解析json数组,但是不够灵活。通过javascript步骤来解析json数组比较灵活,且可以按照需要组装数据流转到下个步骤。1)步骤名称:可以自定义2)TransformScripts:当前步骤编写的javascript脚本3)TransformConstants:重新定义的静态常量,用于控制数据行发生的情况。您必......
  • 【C】柔性数组详解
    @TOC柔性数组也许你从来没有听说过柔性数组(flexiblearray)这个概念,但是它确实是存在的。C99中,结构中的最后一个元素允许是未知大小的数组,这就叫做『柔性数组』成员。例如:struct{ intn; floats; intarr[];//柔性数组成员//是结构体的成员变量,但是是数组};intmain(){ ......
  • 数组、链表、跳表的基本实现和特性
    1.如何对链表加速  2.添加第一级索引  3.添加第二级索引  4.增加N级索引  5.思量及索引添加流程解释  5_1.如何找到数字8  5_2.如何找到数字9  6.跳表查询的时间复杂度分析  6_2.时间复杂度例题  ......
  • 数组
    数组1,数组概述2,数组声明创建packagearray;publicclassDemo01{publicstaticvoidmain(String[]args){//求10个数的和;int[]nums=newint[10];nums[0]=1;nums[1]=2;nums[2]=3;nums[3]=4;......
  • 用 Go 剑指 Offer 39. 数组中出现次数超过一半的数字 (摩尔投票)
    数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 //若不存在多数元素,本题就需要计数并判断示例 1:输入:[1,2,3,2,2,2,5,4,2]输出:2 限制:1<=数组长度<=50000来源:力扣(LeetCode)链......
  • spfa求最短路——BFS,数组实现邻接表,数组实现队列
    题目描述题目来源AcWing给定一个n个点m条边的有向图,图中可能存在重边和自环,边权可能为负数。请你求出1号点到n号点的最短距离,如果无法从1号点走到n号点,则输出impossible。数据保证不存在负权回路。输入格式第一行包含整数n和m。接下来m行每行包含三个......
  • 3、动态数组
    在这里,我们新创建一个数组类,对Java语言中的原始数组进行封装,使得它可以动态的扩容和缩容Java语言中也有类似的实现,叫ArrayList,我们创建的数据类是它的简化版本,下面是代码实现publicclassArray<E>{privateE[]data;privateintsize;publicArray(i......
  • 用 Go 剑指 Offer 42. 连续子数组的最大和
    输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为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......
  • PYTHON 字节数组
    字节数组字节数组是可变类型,采用bytearray内置函数构造。在REPL中,输入help(bytearray)可以获得相关信息。字节数组的来源可以是:可迭代的整数序列,整数范围为0~255;字符串;字节或者另外的字节数组对象;任意实现了缓冲区API的对象。>>>×=bytearray('\×12\×34\×56\×78')>......