0%

JS 筆記 - 迴圈與判斷式的應用

poker

紀錄一下最近在上鋰學院的先別急著寫 leetcode 課程中幾個練習,滿不錯的課程,有助於過去在程式碼卡關的思維。

找出 1~100 的奇偶數

奇數

1
2
3
4
5
for (let i = 1; i < 100; i++) {
if (i % 2 === 1) {
console.log(i);
}
}

偶數

1
2
3
4
5
for (let i = 1; i < 100; i++) {
if (i % 2 === 0) {
console.log(i);
}
}

fizz buzz

經典刷題題目,需求是

  1. n = 15。
  2. 3 的倍數印出 fizz。
  3. 5 的倍數印出 buzz。
  4. 是 3 跟 5 的倍數印出 fizzBuzz。
1
2
3
4
5
6
7
8
9
10
11
12
let n = 15;
for (let i = 1; i <= n; i++) {
if (i % 15 === 0) {
console.log("FizzBuzz");
} else if (i % 3 === 0) {
console.log("Fizz");
} else if (i % 5 === 0) {
console.log("Buzz");
} else {
console.log(i);
}
}

刪除特定字元

這個練習滿有意思的,與其說是刪除,也可以用另一個思維是:倘若遇到一樣的就略過,這樣也可以達到需求。

題目為:
有一字串為 hello,並把 l 刪掉。

1
2
3
4
5
6
7
8
9
let str = "hello";
let deleted = "l";
let ans = "";
for (let i = 0; i < str.length; i++) {
if (str[i] !== deleted) {
ans += str[i];
}
}
console.log(ans);

取最大值

情境可以想,我目前手上翻一個撲克牌,我翻開的第一張牌就是我目前的最大值,倘若第二張牌比我原先的還要大,那就是把第一張放旁邊,將第二張牌代替手上的牌。

1
2
3
4
5
6
7
8
let arr = [2, 6, 8, 4, 10, 20];
let max = arr[0];
for (let i = 0; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
console.log(max); //20

找次大值

延伸上一題,要找次大值的方式,所以從手上有一張牌,變成兩張牌,會有以下狀況:

  1. 一張會是最大值,另一張維次大值。
  2. 如果新翻一張牌的值比最大的還要大,那原本的值就變成次大值。
  3. 如果新翻一張牌的值比手上兩張的值都小,那就略過。
1
2
3
4
5
6
7
8
9
10
11
12
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];
let max = -Infinity;
let max2 = -Infinity;
for (let i = 0; i < arr.length; i++) {
if (arr[i] > max) {
max2 = max;
max = arr[i];
} else if (arr[i] > max2) {
max2 = arr[i];
}
}
console.log(max, max2);

參考資料

先別急著寫 leetcode