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

java学习day6 + leetcode31 下一个排列

 1.消息队列和一些功能

P74 P75 P76基于stream的消息队列

单消费模式

消费者组

P77基于消息队列的异步秒杀下单

shift 2 提及,插入已知笔记

P78 探店笔记

P79查看探店笔记

p80点赞功能

一人一赞 这里也有并发

P81 点赞排行榜

sortedset set集合的选择

redis里面的zset

mybatis改sql排序语句

p82 好友关注

关注和取关

p83 共同关注

redis里的set交集功能

解析id集合没看懂

P84推拉feed流

2.leetcode 31 下一个排列

这里用到了 列表、hashset、数组和整数转换、回溯法全排列,比较全面的一道题


public class Solution {public void nextPermutation(int[] nums) {// 1. 将当前数组拼成一个整数 valueint value = 0;for (int num : nums) {value = value * 10 + num;}// 2. 生成所有全排列,并将每个排列拼接为整数Set<Integer> result = new HashSet<>();boolean[] used = new boolean[nums.length];backtrack(nums, new ArrayList<>(), used, result);// 3. 将结果转为数组并排序List<Integer> sortedList = new ArrayList<>(result);Collections.sort(sortedList);// 4. 找到当前 value 的下一个排列for (int j = 0; j < sortedList.size(); j++) {if (sortedList.get(j) == value) {int nextIndex = (j == sortedList.size() - 1) ? 0 : j + 1;int nextValue = sortedList.get(nextIndex);// 5. 将下一个排列写回原数组String str = Integer.toString(nextValue);Arrays.fill(nums, 0); // 清空原数组for (int k = 0; k < str.length(); k++) {nums[k] = str.charAt(k) - '0';}break;}}}// 回溯法生成全排列private void backtrack(int[] nums, List<Integer> path, boolean[] used, Set<Integer> result) {if (path.size() == nums.length) {int number = 0;for (int digit : path) {number = number * 10 + digit;}result.add(number);return;}for (int i = 0; i < nums.length; i++) {if (used[i]) continue;used[i] = true;path.add(nums[i]);backtrack(nums, path, used, result);path.remove(path.size() - 1);used[i] = false;}}}

好好看下数据结构,慢慢自己写代码,然后把思路变成全部代码

http://www.dtcms.com/a/290766.html

相关文章:

  • 面向对象编程 - 高级篇一
  • 力扣面试150题--搜索二维矩阵
  • TPAMI 2025 | 空间频率调制(SFM),深度学习语义分割的细节守护者
  • uniapp 输入时动态修改值(如含单位)光标被强制移至末尾
  • vxe-table 通过配置 ajax 方式自动请求数据,适用于简单场景的列表
  • K8s 集群CoreDNS监控告警最佳实践
  • Django Ninja
  • 病历数智化3分钟:AI重构医院数据价值链
  • 【Prometheus+Grafana篇】监控通过Keepalived实现的MySQL HA高可用架构
  • 安全测试学习
  • Python并发编程:突破GIL枷锁,高效利用多核CPU
  • c# 获取指定路径盘的可用空间
  • 2025年一区SCI-回旋镖气动椭圆优化算法Boomerang Aerodynamic Ellipse-附Matlab免费代码
  • 大根堆,小根堆,双指针
  • ELN和LIMS的区别
  • 【LeetCode 热题 100】207. 课程表——DFS+三色标记
  • 原型设计模式
  • [Plecs基础知识系列] 基于Plecs的半导体热仿真方法(实战篇)_建立热路模型与仿真
  • 多能量CT扫描性能模体的详细讲解
  • 小飞电视:开启智能娱乐新视界
  • 优思学院:精益制造的工具与方法有什么区别?
  • 2025三掌柜赠书活动第二十五期 网络安全应急响应实战
  • Web3.0 能为你带来哪些实质性的 改变与突破
  • Web LLM 安全剖析:以间接提示注入为核心的攻击案例与防御体系
  • 2025年终端安全管理系统的全方位解析,桌面管理软件的分析
  • 在 Windows上用WSL和VSCode进行Linux开发环境配置
  • 解决OpenHarmony中找不到pthread_cancel和pthread_setcanceltype等libc符号的问题
  • python学智能算法(二十七)|SVM-拉格朗日函数求解上
  • SVM(Support Vector Machine)从入门到精通
  • 部署zabbox企业级分布式监控