中级农民
- 积分
- 112
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2012-7-19
- 最后登录
- 1970-1-1
|
对是的,加了个cache存一下- private static int findLongestIterative(int n) {
- if (n < 1) {
- return 0;
- }
-
- int longest = 1;
- Map<Integer, Integer> map = new HashMap<>();
- map.put(1, 1);
-
- for (int i = 2; i <= n; i++) {
- int step = 0, num = i;
- while (num != 1 && num >= i) {
- if (num % 2 == 0) {
- num /= 2;
- } else {
- num = 3 * num + 1;
- }
- step++;
- }
- map.put(i, step + map.get(num));
- longest = Math.max(longest, map.get(i));
- }
-
- return longest;
- }
复制代码
|
|