【Leetcode -605.种花问题 -628.三个数的最大乘积】

news/2024/10/30 11:18:11/

Leetcode

  • Leetcode -605.种花问题
  • Leetcode -628.三个数的最大乘积

Leetcode -605.种花问题

题目:假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。

给你一个整数数组 flowerbed 表示花坛,由若干 0 和 1 组成,其中 0 表示没种植花,1 表示种植了花。
另有一个数 n ,能否在不打破种植规则的情况下种入 n 朵花?能则返回 true ,不能则返回 false 。

示例 1:
输入:flowerbed = [1, 0, 0, 0, 1], n = 1
输出:true

示例 2:
输入:flowerbed = [1, 0, 0, 0, 1], n = 2
输出:false

提示:
1 <= flowerbed.length <= 2 * 10^4
flowerbed[i] 为 0 或 1
flowerbed 中不存在相邻的两朵花
0 <= n <= flowerbed.length

思路是判断当前位置的前后位置是否有种花,若是第一个位置,则默认前一个位置没种花;若是最后一个位置,则默认后一个位置没种花;其他位置正常判断;若符合题意的种花规则,则在这个位置种花,n 自减,最后判断 n 的取值是否合理;

		bool canPlaceFlowers(int* flowerbed, int flowerbedSize, int n){//对数组进行遍历for (int i = 0; i < flowerbedSize; i++){//分情况讨论://(1)判断当前位置是否有种花,没有种花返回1//(2)如果当前位置没有种花,判断这个位置是否是第一个位置,若是,则默认它的前一个位置没有种花,返回1;// 若不是,判断它的前一个位置是否有种花,没有种花返回1//(3)如果当前位置没有种花,判断这个位置是否是最后一个位置,若是,则默认它的后一个位置没有种花,返回1;// 若不是,判断它的后一个位置是否有种花,没有种花返回1// 如果以上三种情况都为1,则在当前位置种花,n自减if (!flowerbed[i] &&(i == 0 || !flowerbed[i - 1]) &&(i + 1 == flowerbedSize || !flowerbed[i + 1])){flowerbed[i] = 1;n--;}}//最后判断是否能种入 n 朵花,如果 n 还是大于 0 ,则说明不能种入 n 朵花;否则可以;return n <= 0;}

Leetcode -628.三个数的最大乘积

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

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

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

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

提示:
3 <= nums.length <= 10^4
-1000 <= nums[i] <= 1000

思路是先进行升序排序,因为数组中的元素有负数的存在,排序完负数在前,两个负数相乘等于正数,所以先判断前两个负数相乘,再乘上数组中的最大值,即最后一个元素,存到 max1 中;另外再将数组的最后三个数相乘,存到 max2 中,比较 max1 和 max2 的大小,返回较大值;

		int cmp(const void* p1, const void* p2){return *(int*)p1 - *(int*)p2;}int maximumProduct(int* nums, int numsSize){//先进行升序排序qsort(nums, numsSize, sizeof(int), cmp);//因为数组中的元素有负数的存在,排序完负数在前,两个负数相乘等于正数//所以先判断前两个负数相乘,再乘上数组中的最大值,即最后一个元素,存到 max1 中//再将数组的最后三个数相乘,存到 max2 中,比较 max1 和 max2 的大小,返回较大值int max1 = nums[0] * nums[1] * nums[numsSize - 1];int max2 = nums[numsSize - 1] * nums[numsSize - 2] * nums[numsSize - 3];return fmax(max1, max2);}

http://www.ppmy.cn/news/92278.html

相关文章

apache虚拟主机头的实现方式

目录 一&#xff1a;基于不同的IP地址 二&#xff1a;基于不同的端口 三&#xff1a;基于不同的域名 一&#xff1a;基于不同的IP地址 步骤一&#xff1a;修改主配置文件 vim /usr/local/apache/conf/httpd.conf 声明监听不同的IP地址的80端口 Listen 192.168.2.20:80 Listen…

JUnit 使用详解,让你的项目健壮起来

JUnit 是 Java 中最为流行的测试框架之一&#xff0c;用于对单元测试进行自动化测试。本文将全面介绍 JUnit 的相关概念和使用方式&#xff0c;并提供多种类型的代码示例。 一、JUnit 简介 1.1 JUnit 概述 JUnit 是一个基于 Java 语言的测试框架&#xff0c;最初是由 Kent B…

全国第六届研究生数学建模竞赛-多传感器数据融合与航迹预测

目录 摘 要: 一、问题重述 1.1 背景分析 1.2 有关情况 1.3 问题提出 二、模型假设

【JavaSE】Java基础语法(十七)

文章目录 1. final2. 代码块2.1 代码块概述2.2 代码块分类 1. final fianl关键字的作用 final代表最终的意思&#xff0c;可以修饰成员方法&#xff0c;成员变量&#xff0c;类 final修饰类、方法、变量的效果 fianl修饰类&#xff1a;该类不能被继承&#xff08;不能有子类&a…

ThreadLocal 实战之踩坑笔记

工作内容,不对外开放 文章标题 简要聊聊 ThreadLocalThreadLocal 实操举个栗子验证是否没有 remove 掉原信息思考简要聊聊 ThreadLocal ThreadLocal 提供线程内部的局部变量,我们可以将项目中的一些变量直接存放在当前线程中,在本线程内随时随地可取,隔离其他线程,获取保存…

《Oracle高级数据库》期末复习一文总结

文章目录 第一章&#xff1a;数据库基础1.数据库系统数据库数据库管理系统数据库系统 2.数据模型层次模型网状模型关系模型 3.关系型数据库&#xff08;1&#xff09;数据定义语言&#xff08;DDL&#xff09;&#xff08;2&#xff09;数据操纵语言&#xff08;DML&#xff09…

ffprobe学习

如何使用ffprobe 使用ffprobe非常简单。你所要做的就是在命令行上调用它&#xff0c;并将它指向你的视频&#xff0c;如下所示&#xff1a; $ ffprobe 1.mp4 ffprobe version 5.0-full_build-www.gyan.dev Copyright (c) 2007-2022 the FFmpeg developersbuilt with gcc 11.2…

【算法】算法学习三:递归算法 栈

文章目录 一、递归的含义二、基线条件和递归条件三、栈3.1 什么是栈3.2 调用栈3.3 递归调用栈 一、递归的含义 递归算法是一种解决问题的方法&#xff0c;其中函数在执行过程中调用自身。它通过将一个大问题拆分成一个或多个相似的子问题&#xff0c;并逐步解决这些子问题来解…