4 回答

TA貢獻1784條經(jīng)驗 獲得超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貢獻1847條經(jīng)驗 獲得超7個贊
不關(guān)對錯,這地方就不應(yīng)該用三目,邏輯這么多,別人都看不懂你的代碼
大多數(shù)的情況下,就用if else吧,注釋方便,比較清晰明了,語法糖不用也罷

TA貢獻1772條經(jīng)驗 獲得超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;
}
添加回答
舉報