
Re: [閒聊] 每日LeetCode

給一串陣列 跟一個數字k
要找到出現最多次的數字
能用k個1加在各個數字上 讓數字變大
直到k用完
範例 [ 1 , 2 , 3 ] k=4
先看1 差 = 3-1 = 2
消耗掉兩個k 1變成3
再看2 差 = 3-2 = 1
消耗一個k 2變成3
現在有3個3了
輸出出現最多次的數就是三
我的做法是
假設這裡有個數字
我就很暴力的 直接從離他最近的數字找
找到k用完
把所有數字找一次
就可以知道答案惹
姆咪
```c
int maxFrequency(int* nums, int numsSize, int k)
{
int map[100001] ={};
int maxsame = 0;
int same = 0;
int kt = 0;
for(int i = 0 ; i < numsSize ; i++)
{
map[nums[i]] ++;
}
for(int i = 0 ; i < 100001 ; i++)
{
if(map[i] != 0)
{
kt = k;
same = map[i];
for(int j = i-1 ; j > 0 ; j --)
{
if(map[j]!= 0)
{
for(int t = 0 ; t < map[j] ; t++)
{
if(kt >= i - j)
{
kt = kt - (i-j);
same ++;
}
}
if(kt < i - j)
{
break;
}
}
}
if(same > maxsame)
{
maxsame = same;
}
}
}
return maxsame;
}
```
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 134.208.57.64 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1700300623.A.D6E.html
討論串 (同標題文章)
完整討論串 (本文為第 526 之 719 篇):