Re: [閒聊] 每日leetcode已回收
看板Marginalman作者sustainer123 (caster )時間1年前 (2024/07/03 11:51)推噓1(1推 0噓 3→)留言4則, 4人參與討論串439/1548 (看更多)
※ 引述《oin1104 (是oin的說)》之銘言:
: 題目:
: 給你一串陣列
: 你可以對任意三個元素改成任意值
: 改完之後最大跟最小相差的最小值是多少
: 思路:
: 先sort
: 發現改中間的值沒屁用
: 然後就可以只改最大最小的
: 要改成什麼值根本不重要
: 然後要改大的小的哪邊的呢
: 其實 把所有情況列出來 發現只有四種
: 所以直接試試看就可以了
: ```cpp
: class Solution {
: public:
: int minDifference(vector<int>& nums)
: {
: int len = nums.size();
: if(len <= 4)return 0 ;
: sort(nums.begin(),nums.end());
: int l = 0;
: int r = len-1;
: int res = INT_MAX;
: for(int i = 0 ; i < 4 ; i ++)
: {
: res = min(res,nums[r-i] - nums[l+3-i]);
: }
: return res;
: }
: };
: ```
思路:
差不多 其實就四種可能:最大-第四小 第二大-第三小 第三大-第二小 第四大-最小
你能改3個數 所以就選最小的 然後改掉其他三個
Python Code:
class Solution:
def minDifference(self, nums: List[int]) -> int:
if len(nums) <= 4:
return 0
nums.sort()
return min(b - a for a, b in zip(nums[:4], nums[-4:]))
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.194.160.111 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1719978662.A.076.html
→
07/03 11:51,
1年前
, 1F
07/03 11:51, 1F
→
07/03 11:52,
1年前
, 2F
07/03 11:52, 2F
推
07/03 11:54,
1年前
, 3F
07/03 11:54, 3F
→
07/03 12:20,
1年前
, 4F
07/03 12:20, 4F
討論串 (同標題文章)