首页 > 其他分享 >力扣1

力扣1

时间:2023-01-02 21:45:25浏览次数:35  
标签:示例 int nums 力扣 艾希 中毒 duration

485  最大连续 1 的个数

给定一个二进制数组 nums , 计算其中最大连续 1 的个数。

 

示例 1:

输入:nums = [1,1,0,1,1,1]
输出:3
解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.

示例 2:

输入:nums = [1,0,1,1,0,1]
输出:2

class Solution {     public int findMaxConsecutiveOnes(int[] nums) {         int max=0,temp=0;      for(int i=0;i<nums.length;i++) {          if(nums[i]==1) {              temp++;          }          if(nums[i]==0) {              max=max>temp?max:temp;              temp=0;          }          if(i==nums.length-1) {              max=max>temp?max:temp;          }      }      return max; } } 495. 提莫攻击

在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄。他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。

当提莫攻击艾希,艾希的中毒状态正好持续 duration 秒。

正式地讲,提莫在 t 发起发起攻击意味着艾希在时间区间 [t, t + duration - 1](含 t 和 t + duration - 1)处于中毒状态。如果提莫在中毒影响结束  再次攻击,中毒状态计时器将会 重置 ,在新的攻击之后,中毒影响将会在 duration 秒后结束。

给你一个 非递减 的整数数组 timeSeries ,其中 timeSeries[i] 表示提莫在 timeSeries[i] 秒时对艾希发起攻击,以及一个表示中毒持续时间的整数 duration 。

返回艾希处于中毒状态的  秒数。

 

示例 1:

输入:timeSeries = [1,4], duration = 2
输出:4
解释:提莫攻击对艾希的影响如下:
- 第 1 秒,提莫攻击艾希并使其立即中毒。中毒状态会维持 2 秒,即第 1 秒和第 2 秒。
- 第 4 秒,提莫再次攻击艾希,艾希中毒状态又持续 2 秒,即第 4 秒和第 5 秒。
艾希在第 1、2、4、5 秒处于中毒状态,所以总中毒秒数是 4 。

示例 2:

输入:timeSeries = [1,2], duration = 2
输出:3
解释:提莫攻击对艾希的影响如下:
- 第 1 秒,提莫攻击艾希并使其立即中毒。中毒状态会维持 2 秒,即第 1 秒和第 2 秒。
- 第 2 秒,提莫再次攻击艾希,并重置中毒计时器,艾希中毒状态需要持续 2 秒,即第 2 秒和第 3 秒。
艾希在第 1、2、3 秒处于中毒状态,所以总中毒秒数是 3 。
class Solution {     public int findPoisonedDuration(int[] timeSeries, int duration) {         int s=0;         for(int i=0;i<timeSeries.length-1;i++) {             if(timeSeries[i]+duration<=timeSeries[i+1]) {                 s+=duration;             }             else {                 s+=timeSeries[i+1]-timeSeries[i];             }         }         s+=duration;          return s;     } } 414. 第三大的数

给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。

示例 1:

输入:[3, 2, 1]
输出:1
解释:第三大的数是 1 。

示例 2:

输入:[1, 2]
输出:2
解释:第三大的数不存在, 所以返回最大的数 2 。

示例 3:

输入:[2, 2, 3, 1]
输出:1
解释:注意,要求返回第三大的数,是指在所有不同数字中排第三大的数。
此例中存在两个值为 2 的数,它们都排第二。在所有不同数字中排第三大的数为 1 。
class Solution {    public int thirdMax(int[] nums) {                 int x=nums[0];                 long y,z=y=Long.MIN_VALUE;                 for (int i=1;i<nums.length;i++) {                     if(nums[i]==x||nums[i]==y||nums[i]==z)continue;                     if(nums[i]>x)                     {                         z=y;                         y=x;                         x=nums[i];                     }                     else if(nums[i]>y) {                         z=y;                         y=nums[i];                     }                     else if(nums[i]>z) {                         z=nums[i];                     }                 }                 if(z==Long.MIN_VALUE)                     return (int) x;                 return (int) z;             } } 628. 三个数的最大乘积

给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。

示例 1:

输入:nums = [1,2,3]
输出:6

示例 2:

输入:nums = [1,2,3,4]
输出:24

示例 3:

输入:nums = [-1,-2,-3]
输出:-6
class Solution {     public int maximumProduct(int[] nums) {        long x,y,z=y=x=Long.MIN_VALUE,m,n=m=Long.MAX_VALUE;         for(int i=0;i<nums.length;i++) {             if(nums[i]>x) {                 z=y;                 y=x;                 x=nums[i];             }             else if(nums[i]>y) {                 z=y;                 y=nums[i];             }             else if(nums[i]>z) {                 z=nums[i];             }
            if(nums[i]<m) {                 n=m;                 m=nums[i];             }             else if(nums[i]<n) {                 n=nums[i];             }         }         return (int) (m*n*x>x*y*z?m*n*x:x*y*z);     } } 645.错误的集合

集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。

给定一个数组 nums 代表了集合 S 发生错误后的结果。

请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。

 

示例 1:

输入:nums = [1,2,2,4]
输出:[2,3]

示例 2:

输入:nums = [1,1]
输出:[1,2]
class Solution {     public int[] findErrorNums(int[] nums) {       int[]z=new int[2];       boolean [] flag=new boolean[nums.length];       for(int i=0;i<nums.length;i++) {           flag[i]=false;       }       for(int i=0;i<nums.length;i++) {           if(flag[nums[i]-1]) {               z[0]=nums[i];           }           else {               flag[nums[i]-1]=true;           }       }       for(int i=0;i<nums.length;i++) {           if(flag[i]!=true)               z[1]=i+1;       }       return z;     } }

标签:示例,int,nums,力扣,艾希,中毒,duration
From: https://www.cnblogs.com/jiazq/p/17020594.html

相关文章

  • 力扣110 判断是否是平衡二叉树
    力扣110判断是否是平衡二叉树题目:给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对......
  • 力扣107 二叉树的层序遍历
    力扣107二叉树的层序遍历题目:给你二叉树的根节点root,返回其节点值自底向上的层序遍历。(即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)示例1:输入:root......
  • 力扣239 滑动窗口最大值
    题目:给你一个整数数组nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的k 个数字。滑动窗口每次只向右移动一位。返回......
  • 力扣105 根据先序遍历以及中序遍历构建二叉树
    力扣105根据先序遍历以及中序遍历构建二叉树题目:给定两个整数数组preorder和inorder,其中preorder是二叉树的先序遍历,inorder是同一棵树的中序遍历,请构造二叉树......
  • 力扣104 求二叉树的最大深度
    力扣104求二叉树的最大深度题目:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示......
  • 力扣101 对称树
    力扣101对称树题目:给你一个二叉树的根节点root,检查它是否轴对称。示例1:输入:root=[1,2,2,3,4,4,3]输出:true示例2:输入:root=[1,2,2,null,3,null,3]输出:f......
  • 力扣150 逆波兰表达式求值
    题目:给你一个字符串数组tokens,表示一个根据 逆波兰表示法表示的算术表达式。请你计算该表达式。返回一个表示表达式值的整数。注意:有效的算符为'+'、'-'、'*......
  • 力扣100 相同的树
    力扣100相同的树题目:给你两棵二叉树的根节点p和q,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例1:......
  • 力扣1047 删除字符串中的所有相邻重复项
    题目:给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在S上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操......
  • 好题分享、心路历程(力扣601)——连续登录
    【题目介绍】该题为力扣601,名为体育馆的人流量。【题型分类】属于连续专题。官网标为困难题。【思路分享】这里的连续类似时间连续,采用row_number()技巧解题。关......