java数据结构与算法刷题-----LeetCode667. 优美的排列 II
| java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 |
|---|
| 解题思路 |
|---|
- 题目要求我们返回一个数组长度为n的数组,必须含有1~n的所有数,并且从左到右,相邻的元素依次相减,它们的差,必须有k个不同的。比如1,2,3,4,5 这5个数两两相减,都只有一个差----1.如果想要两个不同的差,就不能这么摆。可以这样1,2,3,5,4 这样就有2-1 = 1. 5-3 = 2这样两个不同的差。
- 而且我们发现,想要有k个不同的差,必须至少有k+1个数才能完成。大家可以尝试1~5这5个数都只能用一次,然后组出相邻相减情况下的6个不同的差,是不行的。
- 最简单的做法就是,用最后一个-最前面的,然后依次缩小范围(用过的不再使用),再次用后面的-前面的。直到达到目标要求的数量
- 那么如果要求k个不同的差,给我们n个数(n>=k+1). 我们只需要k+1个数就可以组成k个不同的差,也就是说,有n-k-1个数,我们用不到,直接放入数组即可。剩下的依次用两边的组成不同的差。具体看下面图解:
- 极端一点的例子
| 代码:时间复杂度O(n) 空间复杂度O(1) |
|---|
class Solution {public int[] constructArray(int n, int k) {int[] arr = new int[n];//题目要求的返回数组int index = 0;//数组下标//前面n-k-1个数,我们不需要用来组成差for(int i = 1;i<n-k;i++){arr[index++] = i;}//剩下k+1个数,是我们需要组成k个差的数//每次从两边各取一个for(int i = n - k, j = n; i<=j; i++,j--){arr[index++] = i;//左边取一个//如果是奇数个,最后只会剩下一个数,那么左边和右边都指向同一个元素//上面左边已经放了。右边再放一次就下标越界了。所以需要if(i!=j)这个判断if(i!=j) arr[index++] = j;//右边取一个}return arr;//返回答案数组}
}
相关文章:
java数据结构与算法刷题-----LeetCode667. 优美的排列 II
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 解题思路 题目要求我们返回一个数组长度为n的数组,必须含有1~n…...
win10 20h2 defender添加排除项失败怎么回事 Window Defender添加不了排除项如何处理
我们都知道win10系统中是内置有Windows Defender安全防护软件的,会自动对电脑中的所有文件进行扫描,但是有用户可能某些文件不希望被扫描,那么我们可以添加排除项,可是有不少win10 20h2用户在defender添加排除项的时候却失败了&am…...
mysql生成最近24小时整点时间临时表
文章目录 生成最近24小时整点生成最近30天生成最近12个月 生成最近24小时整点 SELECT-- 每向下推1行, i比上次减去1b.*, i.*,DATE_FORMAT( DATE_SUB( NOW(), INTERVAL ( -( i : i - 1 ) ) HOUR ), %Y-%m-%d %H:00 ) AS time FROM-- 目的是生成12行数据( SELECTa FROM( SELECT…...
基于PHP反序列化练习
PHP创建一个以自己姓名命名的类,要求存在两个属性,name,age,进行序列化,输出序列化以后的数据。 <!-- PHP创建一个以自己姓名命名的类,要求存在两个属性,name,age --> <?…...
ITSS、ITIL、ISO20000:哪个更适合你?
在IT服务管理领域,ITSS、ITIL和ISO20000是备受关注的三大标准。它们在性质、设立组织、目的和适用对象等方面各有千秋。那么,如何在这三大标准中选择最适合自己的呢?下面,让我们一起揭开它们的神秘面纱! 1️⃣ 性质&am…...
Linux配置yum源以及基本yum指令
文章目录 一、yum介绍二、什么是软件包三、配置yum源四、一键配置yum源【三步走】五、yum指令搜索软件安装软件卸载软件 六、其他yum指令更新内核更新软件更新指定软件显示所有可更新的软件清单卸载指定包并自动移除依赖包删除软件包,以及软件包数据和配置文件 一、…...
【AI视野·今日Robot 机器人论文速览 第七十五期】Thu, 11 Jan 2024
AI视野今日CS.Robotics 机器人学论文速览 Thu, 11 Jan 2024 Totally 16 papers 👉上期速览✈更多精彩请移步主页 Daily Robotics Papers Analytical Model and Experimental Testing of the SoftFoot: an Adaptive Robot Foot for Walking over Obstacles and Irre…...
阿里云ECS(CentOS镜像)安装docker
目录 1.前置条件 2.连接至ECS 3.yum软件包更新 4.安装docker前置所需软件包 5.添加docker 官方的 yum 软件源 6.安装docker 7.检测是否成功 8.配置阿里云镜像加速器 1.前置条件 在看本文前保证未安装过docker,或者安装过但是清理干净 如果多次安装失败过,…...
服务器工作环境要求
在开展网站服务之前,合适的服务器工作环境是必不可少的。服务器工作环境指需要一定的软硬件条件来保障服务器可以正常地运转和提供高效率的服务。在这篇文章中,我们将会详细讲解服务器工作环境所需的要素。 一、硬件要求 服务器硬件方面包括了基本的电…...
大数据开发之Spark(入门)
第 1 章:Spark概述 1.1 什么是spark 回顾:hadoop主要解决,海量数据的存储和海量数据的分析计算。 spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。 1.2 hadoop与spark历史 hadoop的yarn框架比spark框架诞生的晚ÿ…...
【GoLang入门教程】Go语言工程结构详述
程序员裁员潮:技术变革下的职业危机 文章目录 程序员裁员潮:技术变革下的职业危机前言总结:专栏集锦强烈推荐写在最后 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网…...
FPGA之分布式RAM(2)
1) 128 X1 Single Port Distributed RAM 下图中可以看出来,通过2个LUT的组合使用可以串联实现更大深度的分布式RAM.下图中出现了F7BMUX的加入, F7BMUX可以用于LUT输出的选通. 原语调用: RAM128XIS#(INIT(128h00000000000000000000000000000000) // Initial conten…...
纯c实现栈和队列 数据结构大全
栈 栈是一种后进先出的数据结构,可以用数组来模拟实现,掌握必要的数据结构是非常的有必要的 一样是先打出头文件 #pragma once#include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdbool.h> #include &…...
测试开发基础 | 计算机网络篇(二):物理层与数据链路层
【摘要】 计算机网络知识是自动化测试等技术基础,也是测试面试必考题目。霍格沃兹测试学院特别策划了本系列文章,将带大家一步步夯实计算机网络的基础知识。由于物理层知识在互联网软件研发工作中用到的并不多,所以可以仅做一个简单的了解。物…...
【深度学习】BasicSR训练过程记录,如何使用BasicSR训练GAN
文章目录 两种灵活的使用场景项目结构概览简化的使用方式 项目结构解读1. 代码的入口和训练的准备工作2. data和model的创建2.1 dataloader创建2.2 model的创建 3. 训练过程 动态实例化的历史演进1. If-else判断2. 动态实例化3. REGISTER注册机制 REGISTER注册机制的实现1. DAT…...
喜讯 | 华院计算摘得“2023大数据产业年度创新技术突破”奖
2024年1月17日, 由数据猿和上海大数据联盟主办,上海市经济和信息化委员会、上海市科学技术委员会指导的“第六届金猿季&魔方论坛——大数据产业发展论坛”在上海市四行仓库举行。论坛以“小趋势大未来”为主题,围绕大数据产业的各个领域展…...
stm32高级定时器死区时间
为什么要有死区时间 高级控制定时器(TIM1和TIM8)能够输出两路互补信号,并且能够管理输出的瞬时关断和接通。这段时间通常被称为死区,用户应该根据连接的输出器件和它们的特性(电平转换的延时、电源开关的延时等)来调整死区时间。 死区发生器 在生成的参…...
Python项目——久坐提醒定时器(PySide6)编写
1、介绍 使用Python编写一个久坐提醒软件。功能: 设置工作时间。设置休息时间。选择休息时是否播放音乐。休息时,软件置顶,且不能关闭。 2、工具 语言:python3.11UI设计工具:Qt designer编译器:PyCharm包…...
Linux,常见的强制退出/结束命令(ctr+c/ctr+d/:q/exit)
PS: 一直搞不清楚,这四个命令区别,干脆每个都输入一遍,逮着哪个算哪个。 1. CtrlC用途: 中断正在运行的程序或命令。(例如输入Ping命令一直处于等待状态,就像是进程一直等待干脆杀死࿰…...
检查一个Java List是否包含某个JavaBean对象的特定值,并且获取这个值
import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { // 创建一个新的ArrayList List<MyBean> list new ArrayList<MyBean>(); // 添加一些元素 list.add(new MyBean("apple", …...
SpringBoot+Hadoop实战:手把手教你搭建民宿数据可视化平台(附完整源码)
SpringBootHadoop实战:构建高可用民宿数据可视化平台 1. 项目背景与技术选型 民宿行业近年来呈现爆发式增长,随之而来的是海量房源信息、用户评价和交易数据的积累。传统的关系型数据库在处理这类数据时面临存储瓶颈和计算性能不足的问题。我们选择Spr…...
深入解析Nordic NRF52832的NFC天线与GPIO复用设计
1. NFC天线硬件设计基础 NRF52832芯片的NFC功能通过P0.09和P0.10两个专用引脚实现,这两个引脚在设计时需要特别注意硬件连接规范。实际项目中,我遇到过不少开发者直接将这两个引脚当作普通GPIO使用导致通信异常的情况——因为默认状态下它们被硬件映射为…...
OpCore-Simplify:突破性黑苹果EFI配置革命,15分钟完成专业级系统搭建 [特殊字符]
OpCore-Simplify:突破性黑苹果EFI配置革命,15分钟完成专业级系统搭建 🚀 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify…...
如何用Sunshine打造你的终极游戏串流服务器:从零开始的完整指南
如何用Sunshine打造你的终极游戏串流服务器:从零开始的完整指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 想要在任何设备上畅玩PC游戏大作吗?Sunshin…...
别再只用柱状图了!用Python的Matplotlib画个酷炫的雷达图,5分钟搞定你的个人技能展示
用Python打造专业级技能雷达图:5步提升你的职场竞争力 简历上那些千篇一律的柱状图和百分比条已经让招聘官审美疲劳了?试试用Matplotlib绘制一个令人眼前一亮的雷达图来展示你的核心技能组合。这种可视化方式不仅能清晰呈现你在各个领域的熟练程度&#…...
教无人机操控3年,这款仿真软件让我彻底告别“真机实训焦虑”
作为无人机专业实操教师,深耕一线教学3年,最大的痛点莫过于“真机实训难”——相信同行们都有共鸣,无人机操控教学看似是“练手”,实则处处是坑,每一个难题都让人头疼不已,甚至一度让我陷入教学焦虑。整理了…...
医疗器械小白必看:B型、BF型、CF型设备到底怎么选?附真实医院案例解析
医疗器械采购指南:B型、BF型与CF型设备的实战选择策略 去年某三甲医院ICU因监护仪选型不当导致患者数据异常的事件,让医疗器械电气安全标准重新成为行业焦点。作为医疗设备采购人员,面对B型、BF型、CF型这些专业术语时,是否常感到…...
05. 微交互设计模式解析:让界面更有生命力
05. 微交互设计模式解析:让界面更有生命力 引言 微交互是用户与界面之间的小互动,它们虽然微小,却能给用户带来巨大的愉悦感。作为一名把代码当散文写的 UI 匠人,我始终认为:好的微交互不是简单的动画效果,…...
Yi-Coder-1.5B代码生成实战:快速搭建本地AI编程助手
Yi-Coder-1.5B代码生成实战:快速搭建本地AI编程助手 1. 引言:你的私人编程助手,本地就能跑 还在为写重复的样板代码而烦恼吗?或者面对一个新框架的API文档,不知道从何下手?如果你是一名开发者,…...
09. CSS生成艺术创作指南:用代码绘制视觉诗篇
09. CSS生成艺术创作指南:用代码绘制视觉诗篇 引言 CSS 不仅仅是样式语言,它也是一种创作艺术的工具。通过 CSS,我们可以创建出令人惊叹的生成艺术作品,这些作品不仅美观,而且具有动态性和交互性。作为一名把代码当散文…...



