文章目录

  • 1. 题目
  • 2. 解题

1. 题目

给你一个下标从 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
-10^9 <= nums[i], goal <= 10^9
0 <= start <= 1000
start != goal
nums 中的所有整数互不相同

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-operations-to-convert-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 广度优先搜索,注意只有在 [ 0, 1000] 范围内的才能够进入队列
class Solution {public:int minimumOperations(vector<int>& nums, int start, int goal) {queue<int> q;vector<int> vis(1001, false);q.push(start);vis[start] = true;int step = 0;while(!q.empty()){int size = q.size();while(size--){int x = q.front();q.pop();for(auto num : nums){if(x+num==goal) return step+1;if(x-num==goal) return step+1;if((x^num)==goal) return step+1;if(x+num>=0 && x+num<=1000 && !vis[x+num]){vis[x+num] = true;q.push(x+num);}if(x-num>=0 && x-num<=1000 && !vis[x-num]){vis[x-num] = true;q.push(x-num);}if((x^num)>=0 && (x^num)<=1000 && !vis[x^num]){vis[x^num] = true;q.push(x^num);}}}step++;}return -1;}
};

20 ms 9 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 2059. 转化数字的最小运算数(BFS)相关推荐

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

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

  2. 【解题报告】Leecode 2059. 转化数字的最小运算数

    题目链接:https://leetcode-cn.com/problems/minimum-operations-to-convert-number/ 题解汇总:https://zhanglong.b ...

  3. 平安科技:传入一个只包含1-9的数字字符串,输出的是包含所有数字的最小整数

    平安科技秋招笔试题: 传入一个只包含1-9的数字字符串,输出的是包含所有数字的最小整数.比如:输入"1992212",输出129. 实例: 输入 1992212 输出 129 思路 ...

  4. java中输出5个数_编写一个程序,要求用户输入5个数字,并输出这些数字中最大的数字和这些数字中最小的数字...

    编写一个程序,要求用户输入5个数字,并输出这些数字中最大的数字和这些数字中最小的数字 . 因此,例如,如果用户键入数字2456 457 13 999 35,则输出将如下所示:最大数字是2456,最小数 ...

  5. 怎么把html格式转换成数字,Excel文本格式怎么转化成数字格式 excel文本转化数字格式教程...

    怎么将excel表格中的文本转化为数字格式呢?我们在使用excel表格的时候,数字格式的数据会更方便用户编辑,所以很多用户都会选择把文本格式转换为数字格式,具体如何操作大家请看下方的excel文本转化 ...

  6. leetcode 面试题 17.14. 最小K个数 大顶堆 小顶堆 快排

    leetcode 面试题 17.14. 最小K个数 [难度:中等] 设计一个算法,找出数组中最小的k个数.以任意顺序返回这k个数均可. 示例: 输入: arr = [1,3,5,7,2,4,6,8], ...

  7. [Golang]力扣Leetcode - 374. 猜数字大小(二分查找)

    [Golang]力扣Leetcode - 374. 猜数字大小(二分查找) 题目:猜数字游戏的规则如下: 每轮游戏,我都会从 1 到 n 随机选择一个数字. 请你猜选出的是哪个数字. 如果你猜错了,我 ...

  8. LeetCode:127 单词接龙 无向图BFS

    LeetCode:127 单词接龙 无向图BFS 给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度.转换需遵循如下 ...

  9. 编程练习:数字矩阵路径数字和最小

    给定一个数字矩阵,试找出一条从左上角到右下角的一条路径,要求路径上的数字和最小. 思路一: 使用动态规划思想,用当前路径最小数字和替换原来位置上的数据,直至到达右下角 /***Copyright @ ...

最新文章

  1. 进程状态控制-进程的挂起和激活
  2. 片偏移字段的值怎么算_搞懂钢丝网片计算原理,怎么算都不怕出错!
  3. 工作151:初始登录样式
  4. 方便微信公众号等手机网页调试插件eruda和vConsole
  5. 软件工程 - 设计模式学习之策略模式Strategy
  6. Centos7.0下MySQL的安装
  7. 基于《Arbitrary Style Transfer with Style-Attentional Networks》的视频风格迁移
  8. (五)Excel函数应用之查询与引用函数
  9. 超实用的!南京南站最新停车指南来了
  10. 深入理解JavaI/O流
  11. LeetCode 299猜数字游戏
  12. 计算机c盘变大,如何解决Win10 C盘空间越来越大的问题?
  13. 【飞然教练】网络游戏怎么样赚钱?
  14. MySQL 怎么插入10天前的日期_使用 MySQL 的 SQL_MODE 有哪些坑,你知道么?
  15. 【金猿人物展】观远数据苏春园:用大数据赋能商业品牌 持续捕捉增长机会
  16. ESP32-ADC学习
  17. mysql教程(五)limit的用法
  18. XNA游戏:各种输入测试 中
  19. jquery拼音转汉字搜索
  20. Python 安装模块(自用)

热门文章

  1. python numpy教程_Python中的Numpy入门教程
  2. 关于用VS写C程序运行时出现烫字以及乱码的问题的原因
  3. Eclipes导入的项目中的中文都是乱码的解决办法
  4. vue样式中背景图片路径_vue打包css文件中背景图片的路径问题
  5. Linux进程全解8——exec 族函数
  6. mvc一对多模型表单的快速构建
  7. JAVA多线程实现的三种方式 ()
  8. mybatis基础学习3---特殊sql语句(备忘)
  9. asp.net cookie操作-添加cookie,添加键值,移除cookie,移除键值
  10. Proactor设计模式:单线程高并发