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

Leetcode 3149. Find the Minimum Cost Array Permutation

  • Leetcode 3149. Find the Minimum Cost Array Permutation
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3149. Find the Minimum Cost Array Permutation

1. 解题思路

这一题的话就是一个动态规划的问题,不过他这个错位着实是把题目变得复杂了不少,唉……

思路上的话实在是没啥可多说的,整体来说就是动态规划加剪枝,唯一的问题就是细节实现上容易踩坑,这里就不一一赘述了,仅把代码放在下面,有兴趣的读者可以自行研究一下。

2. 代码实现

给出python代码实现如下:

class Solution:def findPermutation(self, nums: List[int]) -> List[int]:n = len(nums)status = 0best_score = math.inf@lru_cache(None)def dp(idx, status, first, pre, pre_score):nonlocal best_scoreif pre_score >= best_score:return math.inf, []if idx >= n:best_score = min(best_score, abs(pre - nums[first]) + pre_score)return abs(pre - nums[first]) + pre_score, []score, ans = math.inf, []for i in range(n):if status & (1 << i) == 0:if idx == 0:s, nxt = dp(idx+1, status | (1 << i), i, i, 0)else:s, nxt = dp(idx+1, status | (1 << i), first, i, pre_score + abs(pre-nums[i]))if s < score:ans = [i] + nxtscore = sreturn score, ansscore, ans = dp(0, 0, 0, 0, 0)return ans

提交代码评测得到:耗时7140ms,占用内存237.1MB。

http://www.lryc.cn/news/347653.html

相关文章:

  • Python | 为列表中的元素分配唯一值
  • HTML炫酷的相册
  • C++笔试强训day20
  • 【PHP【实战项目】系统性教学】——使用最精简的代码完成用户的登录与退出
  • Linux下的常用基本指令
  • phpstorm环境配置与应用
  • 【Qt 学习笔记】Qt常用控件 | 布局管理器 | 水平布局Horizontal Layout
  • Hive Aggregation 聚合函数
  • Unity 性能优化之GPU Instancing(五)
  • LeetCode 138. 随机链表的复制
  • 【PC微信小程序点不动处理方法】
  • 量化交易:日内网格交易策略.md
  • Ubuntu 20.04在Anaconda虚拟环境中配置PyQt4
  • charts3D地球--添加航线
  • 变色龙还是树懒:揭示大型语言模型在知识冲突中的行为
  • Android OpenMAX(四)OMX Core
  • 【Linux】轻量级应用服务器如何开放端口 -- 详解
  • git如何查看密码
  • redis脑裂问题
  • 日本率先研发成功6G设备,刺痛了谁?为何日本能率先突破?
  • SpringBoot自动配置源码解析+自定义Spring Boot Starter
  • Kafka 环境配置与使用总结
  • 【算法】滑动窗口——串联所有单词的子串
  • 等保测评安全物理环境测评讲解
  • TensorRT-llm入门
  • TinyXML-2介绍
  • JAVA课程设计
  • 基于SpringBoot+Vue的旅游网站系统
  • http代理ip按流量划算还是个数划算?
  • Banana Pi BPI-F3, 进迭时空K1芯片设计,定位工业级应用,网络通信及工业自动化