2591. 将钱分给最多的儿童

2591. 将钱分给最多的儿童

  • 原题链接:
  • 完成情况:
  • 解题思路:
  • 参考代码:

原题链接:

2591. 将钱分给最多的儿童
https://leetcode.cn/problems/distribute-money-to-maximum-children/

完成情况:

2591. 将钱分给最多的儿童_第1张图片

解题思路:

就是个简单的满足条件的模拟:
1.各种情况需要考虑到,什么情况下返回-1?

2.开始考虑情形:

  • 刚好分孩子
  • 钱有多
  • 钱不够!!!(重点)
    这里面又分两种情况,
    1.刚好使最后一个孩子不够,取余数
    2.不是最后一个孩子不够,取余数

3.然后先给每个孩子一个基本的要求,1
就可以开始找8,判断4了,,,,,这个时候注意是找7,,,判断3了!!!

参考代码:

class Solution {
    public int distMoney(int money, int children) {
      if (money < children){
			return -1;
		}

		//刚好的情况
		if (money == 8*children){
			return children;
			//钱有多的情况
		} else if (money > 8*children) {
			return children-1;
		}

		//钱不够的情况
				//先确保每个人都得有基本的一块钱
		money  -= children;
		int max_maybe = money/7;
		if (money % 7 == 3){
			//mod==3,还要去考虑是不是刚好又只剩最后一个空
			return max_maybe == children - 1 ? max_maybe -1 : max_maybe;
		}
		return max_maybe;
    }
}

你可能感兴趣的:(#,LeetCode题解,java学习,leetcode,算法,职场和发展)