4 回答
TA贡献1784条经验 获得超2个赞
public int wiggleMaxLength(int[] nums) {
if (nums.length < 2) return nums.length;
int len = nums.length, ans = len, flag = 0;
for (int i = 1; i < len; i++) {
if (nums[i] - nums[i - 1] == 0) ans--;
else if (nums[i] - nums[i - 1] > 0) flag = flag == 1 ? ans-- : 1;
else if (nums[i] - nums[i - 1] < 0) flag = flag == -1 ? ans-- : -1;
}
return ans;
}
答案跟题主的需求有些出入,这里的确不太适合用三元。
TA贡献1772条经验 获得超5个赞
这里不适合使用三元运算符
public int wiggleMaxLength(int[] nums) {
if (nums.length < 2) return nums.length;
int len = nums.length, ans = len, flag = 0;
for (int i = 1; i < len; i++) {
if (nums[i] - nums[i - 1] == 0) {
ans--;
} else if (nums[i] - nums[i - 1] > 0) {
if (flag == 1) {
ans--;
} else {
flag = 1;
}
} else if (nums[i] - nums[i - 1] < 0) {
if (flag == -1) {
ans--;
} else {
flag = -1;
}
}
}
return ans;
}
添加回答
举报