Leetcode之N-Sum问题

雨点打透心脏的1/2处 2022-11-15 11:47 88阅读 0赞
  1. class Solution {
  2. public boolean canThreePartsEqualSum(int[] arr) {
  3. int n = 3;
  4. if (arr.length <= 0) {
  5. return false;
  6. }
  7. if (isThreeMultiple(arr, n)) {
  8. int average = getAverage(arr, n);
  9. return isDivideThreePart(arr, average, n);
  10. }else {
  11. return false;
  12. }
  13. }
  14. /**
  15. * 判断是否是n的倍数
  16. */
  17. public boolean isThreeMultiple(int[] arr, int n) {
  18. int sum = 0;
  19. for (int i = 0; i < arr.length; i++) {
  20. sum += arr[i];
  21. }
  22. if (sum%n == 0) {
  23. return true;
  24. }else {
  25. return false;
  26. }
  27. }
  28. /**
  29. * 获取平均值
  30. */
  31. public int getAverage(int[] arr, int n) {
  32. int sum = 0;
  33. for (int i = 0; i < arr.length; i++) {
  34. sum += arr[i];
  35. }
  36. return sum/n;
  37. }
  38. /**
  39. * 判断数组是否可以分为n部分
  40. */
  41. public boolean isDivideThreePart(int[] arr, int average, int n) {
  42. int flag = 0;
  43. int sum = 0;
  44. for(int i = 0; i < arr.length; i++) {
  45. sum += arr[i];
  46. if (sum == average) {
  47. flag++;
  48. sum = 0;
  49. }
  50. }
  51. return flag >= n;
  52. }
  53. }

发表评论

表情:
评论列表 (有 0 条评论,88人围观)

还没有评论,来说两句吧...

相关阅读