当前位置: 首页 > news >正文

​力扣解法汇总1238. 循环码排列

目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:

力扣


描述:

给你两个整数 n 和 start。你的任务是返回任意 (0,1,2,,...,2^n-1) 的排列 p,并且满足:

  • p[0] = start
  • p[i] 和 p[i+1] 的二进制表示形式只有一位不同
  • p[0] 和 p[2^n -1] 的二进制表示形式也只有一位不同

示例 1:

输入:n = 2, start = 3
输出:[3,2,0,1]
解释:这个排列的二进制表示是 (11,10,00,01)所有的相邻元素都有一位是不同的,另一个有效的排列是 [3,1,0,2]

示例 2:

输出:n = 3, start = 2
输出:[2,6,7,5,4,0,1,3]
解释:这个排列的二进制表示是 (010,110,111,101,100,000,001,011)

提示:

  • 1 <= n <= 16
  • 0 <= start < 2^n

解题思路:

* 解题思路:
* 其实我们可以构造一个环,这个环中任意两个数相邻都是只相差一位。
* 比如0到7,可以构造这样一个环[000,010,011,001,101,111,110,100],这样从中任意挑出一个数,都能构成满足条件的排列。
* 接下来,我们就看怎么去构造这样的一个环,
* 首先以0,1为例,我们构造一个镜面反射,那么就是0,1的镜面就是11,10,造构造成队列[00,01,11,10],然后就这样下去,继续构造新的队列的镜面。
* 最终会生成这样的一个环,找到start所在的位置,重新组成一个新的排列即可。
 

代码:

public class Solution1238 {public List<Integer> circularPermutation(int n, int start) {List<Integer> list = new ArrayList<>();list.add(0);List<Integer> integers = makeList(list, 0, 1 << n);int index = integers.indexOf(start);List<Integer> result = integers.subList(index, integers.size());result.addAll(integers.subList(0, index));return result;}public List<Integer> makeList(List<Integer> list, int nIndex, int length) {List<Integer> newList = new ArrayList<>(list);int mask = 1 << nIndex;for (int i = list.size() - 1; i >= 0; i--) {newList.add(mask | list.get(i));}if (newList.size() == length) {return newList;}return makeList(newList, nIndex + 1, length);}
}

相关文章:

​力扣解法汇总1238. 循环码排列

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a; 力扣 描述&#xff1a; 给你两个整数 n 和 start。你的任务是返回任意 (0,1,2,,...,2^n-1) 的排列 p&…...

[数据结构]时间复杂度与空间复杂度

[数据结构]时间复杂度与空间复杂度 如何衡量一个算法的好坏 long long Fib(int N) {if(N < 3)return 1;return Fib(N-1) Fib(N-2); } 这是一个求斐波那契数列的函数&#xff0c;使用递归的方法求得&#xff0c;虽然代码看起来很简洁&#xff0c;但是简洁真的就好吗&#…...

Codeforces Round #848 (Div. 2)(A~D)

A. Flip Flop Sum给出一个只有1和-1的数组&#xff0c;修改一对相邻的数&#xff0c;将它们变为对应的相反数&#xff0c;修改完后数组的和最大是多少。思路&#xff1a;最优的情况是修改一对-1&#xff0c;其次是一个1一个-1&#xff0c;否则修改两个1。AC Code&#xff1a;#i…...

第十三届蓝桥杯Java B 组国赛 C 题——左移右移(AC)

目录1.左移右移1.题目描述2.输入格式3.输出格式4.样例输入5.样例输出6.数据范围6.原题链接2.解题思路3.Ac_code1.左移右移 1.题目描述 小蓝有一个长度为 NNN 的数组, 初始时从左到右依次是 1,2,3,…N1,2,3, \ldots N1,2,3,…N 。 之后小蓝对这个数组进行了 MMM 次操作, 每次…...

第14篇:系列二—Java抽象类/接口/枚举

目录 1、继承的定义(Inheritance) 2、继承的优点 2.1 易维护性 2.2 复用性 2.3 条理性...

深入浅出C++ ——哈希

文章目录前言一、unordered系列关联式容器1. unordered_map2. unordered_set二、哈希1. 哈希概念2. 哈希冲突3. 哈希函数4. 哈希冲突解决方法三、模拟实现unordered系列容器1. 哈希表的改造2. 模拟实现 unordered_set3. 模拟实现 unordered_map前言 在C11中&#xff0c;STL又提…...

Tina_Linux_系统裁剪_开发指南

文章目录Tina_Linux_系统裁剪_开发指南1 概述2 Tina系统裁剪简介2.1 boot0裁剪2.2 uboot裁剪2.3 内核裁剪2.3.1 删除不使用的功能2.3.2 删除不使用的驱动2.3.3 修改内核源代码2.3.3.1 size工具.2.3.3.2 ksize.py脚本2.3.3.3 nm命令2.3.3.4 kernel压缩方式.2.4 文件系统裁剪.2.4…...

算法刷题打卡第99天:至少在两个数组中出现的值

至少在两个数组中出现的值 难度&#xff1a;简单 给你三个整数数组 nums1、nums2 和 nums3 &#xff0c;请你构造并返回一个 元素各不相同的 数组&#xff0c;且由 至少 在 两个 数组中出现的所有值组成。数组中的元素可以按 任意 顺序排列。 示例 1&#xff1a; 输入&…...

线程池面试题

1. 什么是线程池&#xff1f;为什么要使用线程池&#xff1f; 线程池是一种用于管理线程的技术&#xff0c;它可以在应用程序中重复使用一组线程来执行多个任务。线程池的优点包括提高应用程序的性能和可伸缩性、避免线程创建和销毁的开销、避免线程过多导致系统负担过重等。线…...

【学习笔记】NOIP爆零赛5

说实话是不想补题的。因为每一道题都贼难写&#xff0c;题解又通篇写着显然&#xff0c;然后自己天天搞竞赛又把注意力搞差了&#xff0c;调一道题又调半天&#xff0c;考试的题又难的要死 不会正解 &#xff0c;部分分又写挂了 可能心态崩了就是从那场t1t1t1签到题考高精度数位…...

【数据结构】时间复杂度

&#x1f680;write in front&#x1f680; &#x1f4dc;所属专栏&#xff1a;初阶数据结构 &#x1f6f0;️博客主页&#xff1a;睿睿的博客主页 &#x1f6f0;️代码仓库&#xff1a;&#x1f389;VS2022_C语言仓库 &#x1f3a1;您的点赞、关注、收藏、评论&#xff0c;是对…...

vector的基本使用

目录 介绍&#xff1a; vector iterator 的使用 增删查改 增&#xff08;push_back insert&#xff09;&#xff1a; 删(pop_back erase)&#xff1a; swap&#xff1a; vector的容量和扩容&#xff1a; 排序&#xff08;sort&#xff09;&#xff1a; 介绍&#xff…...

剑指 Offer 55 - I. 二叉树的深度

摘要 剑指 Offer 55 - I. 二叉树的深度 一、深度优先搜索 如果我们知道了左子树和右子树的最大深度l和r&#xff0c;那么该二叉树的最大深度即为&#xff1a;max(l,r)1。 而左子树和右子树的最大深度又可以以同样的方式进行计算。因此我们可以用「深度优先搜索」的方法来计…...

Bean的生命周期和作用域

Bean的生命周期Bean的执行流程&#xff1a;Bean 执行流程&#xff1a;启动Spring 容器 -> 实例化 Bean&#xff08;分配内存空间&#xff0c;从无到有&#xff09;-> Bean 注册到 Spring 中&#xff08;存操作&#xff09; -> 将 Bean 装配到需要的类中&#xff08;取…...

TestNG和Junit的区别,测试框架该如何选择?

要想知道两个框架的区别&#xff0c;首先分别介绍一下两个框架。 TestNG是一个java中的开源自动化测试框架&#xff0c;其灵感来自JUnit和NUnit&#xff0c;TestNG还涵盖了JUnit4整个核心的功能&#xff0c;但引入了一些新的功能&#xff0c;使其功能更强大&#xff0c;使用更…...

MySQL安全登录策略

MySQL密码复杂度策略设置 MySQL 系统自带有 validate_password 插件&#xff0c;此插件可以验证密码强度&#xff0c;未达到规定强度的密码则不允许被设置。MySQL 5.7 及 8.0 版本默认情况下貌似都不启用该插件&#xff0c;这也使得我们可以随意设置密码&#xff0c;比如设置为…...

优化模型验证23:带无人机停靠站的卡车无人机协同配送车辆路径问题、模型、gurobipy验证及结果可视化

带中转hub的卡车无人机车辆路径问题 模型来源为:Wang Z , Sheu J B . Vehicle routing problem with drones[J]. Transportation Research Part B: Methodological, 2019, 122(APR.):350-364. 问题描述: 这篇问题研究了一个带停靠站的卡车无人机路径问题,无人机仅能从起点…...

mongoTemplate Aggregation 多表联查 排序失效问题解决

目录说明说明 接着上一个文章的例子来说&#xff1a;mongoTemplate支持多表联查 排序 条件筛选 分页 去重分组 在按照上一个demo的代码执行后&#xff0c;可能会发生排序失效的问题&#xff0c;为什么说可能呢&#xff1f;每个人负责业务不同&#xff0c;不可能是最简单的dem…...

什么是智慧实验室?

智慧实验室是利用现代信息技术和先进设备将实验室实现智能化和智慧化的概念。通过将各种数据、信息和资源整合在一起&#xff0c;实现实验室设备的互联互通&#xff0c;数据的实时采集、传输、处理和分析&#xff0c;从而提高实验室的效率、精度和可靠性。一、智慧实验室包含多…...

Python abs() 函数

Python abs() 函数Python 数字描述abs() 函数返回数字的绝对值。语法以下是 abs() 方法的语法:abs( x )参数x -- 数值表达式。返回值函数返回x&#xff08;数字&#xff09;的绝对值。实例以下展示了使用 abs() 方法的实例&#xff1a;#!/usr/bin/python print "abs(-45) …...

2025届最火的六大AI辅助写作工具推荐榜单

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 要降低AIGC&#xff08;人工智能生成内容&#xff09;的检测率&#xff0c;得从语言风格、逻…...

33.3%提及率,直接提及却为0%:张雪机车的AI搜索“假性存在”危机

一次小范围诊断&#xff0c;暴露了一个关键信号&#xff1a;品牌在AI生成答案中的“存在感”&#xff0c;远没有看起来那么安全。近日&#xff0c;张雪机车在国内大火&#xff0c;各大媒体都对张雪本人做了铺天盖地的报道。我们是做GEO&#xff08;生成式搜索优化&#xff09;服…...

从VGG到ResNet:我的模型为什么越深效果越差?深入对比两种经典网络的设计哲学与实战选择

从VGG到ResNet&#xff1a;深度神经网络的设计哲学与实战选择指南 当你第一次尝试用VGG16完成图像分类任务时&#xff0c;可能会惊讶于它的表现——直到你发现训练更深的VGG19时&#xff0c;准确率不升反降。这种反直觉的现象引出了深度学习领域的一个核心问题&#xff1a;为什…...

jupyter Kernel Disconnected崩溃的修复

问题描述由于博主执行了pip install tensorflow2.13.0这个傻逼操作降级了很多底层库&#xff08;比如 numpy, typing-extensions 等&#xff09;导致这些底层的变动把 Jupyter 本身的运行环境搞崩了&#xff0c;启动不了 Python 内核。启动后也显示Disconnected而且点击运行后&…...

李慕婉-仙逆-造相Z-Turbo 生成Matlab算法脚本:从数学公式到可执行代码

李慕婉-仙逆-造相Z-Turbo 生成Matlab算法脚本&#xff1a;从数学公式到可执行代码 最近在帮一个做信号处理的朋友调试代码&#xff0c;他给我看了一页论文里的公式&#xff0c;问我怎么在Matlab里实现。我盯着那一堆希腊字母和矩阵运算&#xff0c;突然想到&#xff0c;要是能…...

利用快马ai快速构建b站直播弹幕互动界面原型

最近在B站看A8芯片相关的科技直播时&#xff0c;突然想到如果能快速做个直播辅助工具的原型该多方便。作为一个喜欢折腾的前端开发者&#xff0c;我尝试用InsCode(快马)平台来验证这个想法&#xff0c;整个过程比想象中顺利很多。 原型设计思路 核心需要三个区域&#xff1a;左…...

AI辅助开发新体验:让快马平台智能生成风车动漫用户中心模块

最近在开发一个动漫类网站项目时&#xff0c;遇到了用户中心模块的开发需求。作为一个独立开发者&#xff0c;既要处理前端界面又要兼顾后端接口&#xff0c;工作量确实不小。好在发现了InsCode(快马)平台的AI辅助开发功能&#xff0c;帮我高效完成了这个模块的开发。下面分享下…...

告别模糊字体!3分钟掌握浏览器字体渲染优化神器

告别模糊字体&#xff01;3分钟掌握浏览器字体渲染优化神器 【免费下载链接】GreasyFork-Scripts The open source code of this project is used for userscripts (油猴脚本) for desktop browsers, including Font Rendering (Customized) (字体渲染&#xff08;自用脚本&…...

如何快速配置AI自瞄系统:面向游戏爱好者的完整指南

如何快速配置AI自瞄系统&#xff1a;面向游戏爱好者的完整指南 【免费下载链接】RookieAI_yolov8 基于yolov8实现的AI自瞄项目 AI self-aiming project based on yolov8 项目地址: https://gitcode.com/gh_mirrors/ro/RookieAI_yolov8 还在为FPS游戏中的精准瞄准而烦恼吗…...

运算放大器基础:从符号到负反馈的实战解析

1. 运算放大器基础认知 第一次接触运算放大器时&#xff0c;我盯着电路板上那个小小的三角形符号发愣——这玩意儿凭什么能同时处理比较和放大两种任务&#xff1f;后来才发现&#xff0c;它的强大之处恰恰藏在最简单的符号里。运放的符号主体是个三角形&#xff0c;五个关键引…...