BluePen BluePen
  • Jenkins
  • OS
  • 算法
随笔
分类
标签
归档
关于
留言板
GitHub (opens new window)

Alex

一个好人
  • Jenkins
  • OS
  • 算法
随笔
分类
标签
归档
关于
留言板
GitHub (opens new window)
  • leetcode

  • interview

    • 扁平树结构转换为嵌套json
    • 走格子
    • Dynamic Programming 示例
    • 猜数字游戏
    • 数组划分
      • 题目描述
      • 解法
      • 总结
  • well_known_algo

  • algo
  • interview
Alex
2019-04-27
目录

数组划分

-> 题目描述

给定一个f整数数组 arr,判断能否将该数组划分为 n部分(n为正整数),每部分包含至少一个元素,且各部分元素的和相等。

eg:
input:arr: [1,1,1], n: 3
output: true

-> 解法

点击查看
/**
 * @param {Array} arr
 * @param {int} n
 * @return {Bool}
 * 
 */
 function solution(arr, n){
	const sum = arr.reduce((acc, curr)=>acc+curr, 0);
	const p = sum / n;
	if(p !== parseInt(p)){
		return false;
	}
	let i = 0;
	let acc = 0;
	while(i < arr.length && n > 0){
		acc += arr[i];
		if(acc !== p){
			i++;
		}else{
			n--;
			acc = 0;
			i++;
		}
	}
    while(n === 0 && i < arr.length){ //处理末尾 0元素
		if(arr[i] !==0){
			break;
		}
		i++;
	}
	if(n === 0 && i === arr.length){
		return true
	}
	return false
 }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

-> 总结

阿里三面时现场给我出的一道题,是划分数组为 K个和相等的子集的简化版。 主要切入点在于求和求平均值。

编辑此页 (opens new window)
更新于: 2019-04-27 21:50
猜数字游戏
kmp 算法

← 猜数字游戏 kmp 算法→

Copyright © 2019-2022 | yxxy | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式