Consecutive Numbers Sum LeetCode solution in Java
1class Solution {23public int consecutiveNumbersSum(int n) {4final double eightN = (8d * ((double) n)); // convert to double because 8n can overflow int5final int maxTriangular = (int) Math.floor((-1d + Math.sqrt(1d + eightN)) / 2d);6int ways = 1;7int triangular = 1;8for (int m = 2; m <= maxTriangular; ++m) {9triangular += m;10final int difference = n - triangular;11if ((difference % m) == 0) {12ways++;13}14}15return ways;16}17}