240506.LeetCode——2769.找出最大的可达成数字

题目描述:

给你两个整数 num 和 t 。

如果整数 x 可以在执行下述操作不超过 t 次的情况下变为与 num 相等,则称其为 可达成数字 :

  • 每次操作将 x 的值增加或减少 1 ,同时可以选择将 num 的值增加或减少 1 。

返回所有可达成数字中的最大值。可以证明至少存在一个可达成数字。

EX1.

7806577dd5dc40d7b3400476227ed1d6.jpg

 EX2.

7860f1916a864d44a650015430772fd4.jpg

提示:

  • 1 <= num, t <= 50

代码实现:

C语言:

//自己想的.

int theMaximumAchievableX(int num, int t)
{
    int result;
    for(result=50;;result--)
    {
        if((num+t)==(result-t))
        {
            
            return result;
            break;
        }
    }

}

思路:

题目说的是一个数减一等于一个数加一,于是选择用if语句,找到符合的情况,然后考虑到遍历,并且是找出最大的数,所以考虑递减,而且题目给出了提示,提示上限是50,所以这个方法完全可行,最后返回循环变量即可。

 

//题解库中大佬的解法

int theMaximumAchievableX(int num, int t)

{
    return num + t * 2;//可读性有点差...
}

 思路:

 

其实原理差不多就是我想的num+t==x-t,移项之后,就变成了x=num+2*t,然后直接return,如果不考虑运行时间最优,内存效率最高的话,大佬的题解可以引入一个变量result,最后return result,anyway,我还是没有想到可以移项,主要是担心改变了运算优先级顺序然后出错...

总结

       先扯点别的,昨天刚刚结束五一假期,感觉五一真的什么都没干,说好要每日刷力扣的,结果五天,一天都没刷...还是被自我感动的,anyway,今天开始应该会有一段空窗期,打算用来补之前落下的各种作业,然后这周还是保持有空刷力扣吧(想起来上周三貌似没刷力扣...周三是我固定给自己必须刷题的日子)。虽然现在这些题都很简单,都是水题,主要目的是建立起刷题的习惯,循序渐进吧!提一嘴,我这个刷题顺序是乐扣官方的题目通过率降序刷的。

       这个题没有什么难度,写一遍就通过了,只能说用来练练细节吧,今天算是作为五一休假重启过渡期吧。

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值