题目链接:https://leetcode-cn.com/problems/minimum-operations-to-convert-number/


题解汇总:https://zhanglong.blog.csdn.net/article/details/121071779


题目描述

给你一个下标从 0 开始的整数数组 nums ,该数组由 互不相同 的数字组成。另给你两个整数 start 和 goal 。

整数 x 的值最开始设为 start ,你打算执行一些运算使 x 转化为 goal 。你可以对数字 x 重复执行下述运算:

如果 0 <= x <= 1000 ,那么,对于数组中的任一下标 i(0 <= i < nums.length),可以将 x 设为下述任一值:

x + nums[i]
x - nums[i]
x ^ nums[i](按位异或 XOR)
注意,你可以按任意顺序使用每个 nums[i] 任意次。使 x 越过 0 <= x <= 1000 范围的运算同样可以生效,但该该运算执行后将不能执行其他运算。

返回将 x = start 转化为 goal 的最小操作数;如果无法完成转化,则返回 -1 。

示例 1:
输入:nums = [1,3], start = 6, goal = 4
输出:2
解释:
可以按 6 → 7 → 4 的转化路径进行,只需执行下述 2 次运算:
6 ^ 1 = 7
7 ^ 3 = 4

示例 2:
输入:nums = [2,4,12], start = 2, goal = 12
输出:2
解释:
可以按 2 → 14 → 12 的转化路径进行,只需执行下述 2 次运算:
2 + 12 = 14
14 - 2 = 12

示例 3:
输入:nums = [3,5,7], start = 0, goal = -4
输出:2
解释:
可以按 0 → 3 → -4 的转化路径进行,只需执行下述 2 次运算:
0 + 3 = 3
3 - 7 = -4
注意,最后一步运算使 x 超过范围 0 <= x <= 1000 ,但该运算仍然可以生效。

示例 4:
输入:nums = [2,8,16], start = 0, goal = 1
输出:-1
解释:
无法将 0 转化为 1

示例 5:
输入:nums = [1], start = 0, goal = 3
输出:3
解释:
可以按 0 → 1 → 2 → 3 的转化路径进行,只需执行下述 3 次运算:
0 + 1 = 1
1 + 1 = 2
2 + 1 = 3

提示:
1 <= nums.length <= 1000
-109 <= nums[i], goal <= 109
0 <= start <= 1000
start != goal
nums 中的所有整数互不相同


思路:BFS全量搜索即可,注意要输出步数。

这里附上我测试时的完整可运行代码


#include "iostream"
#include "algorithm"
#include "queue"
#include "vector"
#include "unordered_map"using namespace std;class Solution {public:int minimumOperations(vector<int>& nums, int start, int goal) {// queue,入start,  while非空, 循环,  过0 or 1000则不入queue<int> q;// 哈希查找,去重unordered_map<int, int>um;q.push(start);int step = 0;while (!q.empty()) {int size = q.size();for (int j = 0; j < size; j++) {            //int t = q.front();q.pop();if (t == goal) {return step;}for (auto i : nums) {if ((t + i == goal) || (t - i == goal) || ((t^i) == goal)) {return step + 1;}// 加法if((t + i >= 0 && t + i <= 1000) && um[t+i] == 0) {q.push(t + i);um[t+i] = 1;}// 减法if((t - i >= 0 && t - i <= 1000) && um[t-i] == 0) {q.push(t - i);um[t-i] = 1;}// 异或if(((t ^ i) >= 0 && (t ^ i) <= 1000) && um[t^i] == 0) {q.push(t ^ i);um[t^i] = 1;}}}step++;}return -1;}
};int main() {Solution solution;vector<int> v;v.push_back(2);v.push_back(4);v.push_back(12);cout << solution.minimumOperations(v, 2, 12);return 0;
}

             ——弱小和无知不是生存的障碍,傲慢才是。

【解题报告】Leecode 2059. 转化数字的最小运算数相关推荐

  1. 2059. 转化数字的最小运算数

    2059. 转化数字的最小运算数 给你一个下标从 0 开始的整数数组 nums ,该数组由 互不相同 的数字组成.另给你两个整数 start 和 goal . 整数 x 的值最开始设为 start , ...

  2. LeetCode 2059. 转化数字的最小运算数(BFS)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个下标从 0 开始的整数数组 nums ,该数组由 互不相同 的数字组成.另给你两个整数 start 和 goal . 整数 x 的值最开始设为 s ...

  3. 解题报告-Leecode 563. 二叉树的坡度——Leecode每日一题系列

    今天是坚持每日一题打卡的第二十二天 题目链接:https://leetcode-cn.com/problems/binary-tree-tilt/ 题解汇总:https://zhanglong.blo ...

  4. 解题报告(十八)数论题目泛做(Codeforces 难度:2000 ~ 3000 + )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  5. 解题报告(八) prufer 序列与 Cayley 公式(ACM / OI)超高质量题解

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  6. 解题报告:线性规划与网络流24题

    目录 A.飞行员配对方案问题 (二分图最大匹配)(最大流)[提高+/省选- ] B.太空飞行计划问题(最大权闭合图转最小割.最小割方案输出)[省选/NOI- ] C.最小路径覆盖问题(有向无环图最小路 ...

  7. 解题报告 (十三) 尺取法

    文章目录 尺取法 解题报告 PKU 2100 Graveyard Design PKU 3061 Subsequence PKU 2739 Sum of Consecutive Prime Numbe ...

  8. 【解题报告】2015ACM/ICPC亚洲区上海站

    题目链接 A.An Easy Physics Problem(HDU 5572) 思路 我们可以将问题分为以下 22 种情况: 球与圆柱相撞 球与圆柱不相撞 我们可以通过判断以 AA 为起点以 V⃗  ...

  9. 数据结构第七次上机实验-解题报告

    数据结构第七次上机实验-解题报告 7-1 序列调度 (100 分) 题目 思路 参考代码 7-2 最大最小差 (100 分) 题目 思路 参考代码 7-3 二叉树最短路径长度 (100 分) 题目 思 ...

最新文章

  1. 云计算和大数据时代网络技术揭秘(八)数据中心存储FCoE
  2. Java EE---通过Spring JDBC实现数据库的增、删、改、查
  3. Linux 启动失败 磁盘阵列,组建RAID5重启系统,出现md127的解决办法
  4. CCIE-LAB-第一篇-教学导入环境
  5. 利用blink+MQ实现流计算中的超时统计问题
  6. linux nls_lang oracle,linux操作系统环境变量LANG和NLS_LANG的区别
  7. mfc 子窗体 按钮不触发_资深程序员用c++开发MFC银行排队叫号系统,小白看了也能学会...
  8. 全网最新Spring Boot2.5.1整合Activiti5.22.0企业实战教程<入门篇>
  9. et al、e.g.、i.e.读音及释义
  10. Spring :Spring AOP 中的一些术语
  11. Unity 自定义Log系统
  12. java中整数和字符串间的转换方法
  13. 将网页和文档的背景改为绿色来保护眼睛
  14. web网页设计实例作业 ——二手书店-大学生书店(13页) 学生个人网站作业模板 简单个人网页制作
  15. 数据库与excel数据对比
  16. stm32学习探究:利用TB6612驱动直流电机
  17. 微信小游戏开发实战教程15-关卡编辑器的制作以及关卡分享功能的实现
  18. js-xlsx插件导出的excel头部有一行序号解决办法
  19. 令人头大的慢查询分析
  20. 微信机器人康小博来了!!!

热门文章

  1. SetRegistryKey的作用
  2. 为 Android 编译 MuPDF 查看器
  3. 高级数据结构与算法 | 跳跃表(Skip List)
  4. TCP/IP协议精华指南pdf发布
  5. 当年我是如何死磕 MySQL 数据库的
  6. 阿里巴巴:全链路压测体系建设方案的思考与实践
  7. 96秒100亿!如何抗住双11高并发流量?
  8. 实现 LRU 缓存机制
  9. ffplay.c学习-3-音视频解码线程
  10. 腾讯荣获OSCAR尖峰开源企业奖 参与国内首个开源治理白皮书编写