【Leetcode刷题】1431.拥有最多糖果的孩子

题目描述:
【Leetcode刷题】1431.拥有最多糖果的孩子_第1张图片

四则运算吧…没什么算法,都是常规操作。
既然允许多个小孩拿到最大值,那么,只要extraCandies给的够多,就有可能所有人都是拿的最大的
所以判断条件用差值:设没进行二次分配前的最大值为max,每个人拿到的为valuetrue的判断条件为max-value<=extraCandies

暴力枚举1:C

/** * Note: The returned array must be malloced, assume caller calls free(). */
bool* kidsWithCandies(int* candies, int candiesSize, int extraCandies, int* returnSize)
{
     
	int max=candies[0];	//未二次分配前最大值
	int i;
	
	bool* res=(bool *)malloc(sizeof(bool)*candiesSize);	//返回
	
	//先找最大值
	for(i=0;i<candiesSize;i++)
		max=max<candies[i]?candies[i]:max;
	//然后判断
	for(i=0;i<candiesSize;i++)
		res[i]=(max-candis[i])<=extraCandies?true:false;
	
	*returnSize=candiesSize;	//坑。
	return res;
}

坑比我想象的要多。返回值指针的注意一下。

暴力枚举:Java

class Solution {
         
public List<Boolean> kidsWithCandies(int[] candies, int extraCandies) 
{
             
	int n=candies.length;        
	int max=candies[0];        
	for(int i=0;i<n;i++)           
		max=Math.max(max,candies[i]);
	List<Boolean> res=new ArrayList<Boolean>();        
	for(int i=0;i<n;i++)            
		res.add(max-candies[i]<=extraCandies);        
		return res;    
}
}

你可能感兴趣的:(LeetCode刷题)