题目描述:
给你两个整数 num
和 t
。
如果整数 x
可以在执行下述操作不超过 t
次的情况下变为与 num
相等,则称其为 可达成数字 :
- 每次操作将
x
的值增加或减少1
,同时可以选择将num
的值增加或减少1
。
返回所有可达成数字中的最大值。可以证明至少存在一个可达成数字。
EX1.
EX2.
提示:
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,今天开始应该会有一段空窗期,打算用来补之前落下的各种作业,然后这周还是保持有空刷力扣吧(想起来上周三貌似没刷力扣...周三是我固定给自己必须刷题的日子)。虽然现在这些题都很简单,都是水题,主要目的是建立起刷题的习惯,循序渐进吧!提一嘴,我这个刷题顺序是乐扣官方的题目通过率降序刷的。
这个题没有什么难度,写一遍就通过了,只能说用来练练细节吧,今天算是作为五一休假重启过渡期吧。