1. 程式人生 > 其它 >狀態機 1748一次遍歷

狀態機 1748一次遍歷

有限狀態機四大要素

  • 現態:當前所處狀態
  • 次態:當條件滿足後,即將轉移的下一個狀態
  • 動作:當滿足某個事件時執行的動作;動作執行完畢後可以轉移到另一個狀態或保持原有狀態
  • 條件:轉移狀態所需的條件,當滿足條件時,會觸發一個動作或進行狀態轉移

1748. 唯一元素的和

我們可以賦給每個元素三個狀態:

00:該元素尚未被訪問;
11:該元素被訪問過一次;
22:該元素被訪問超過一次。
我們可以在首次訪問一個元素時,將該元素加入答案,然後將該元素狀態標記為 1。在訪問到一個標記為 1的元素時,由於這意味著該元素出現不止一次,因此將其從答案中減去,並將該元素狀態標記為 2。

class Solution {
public
: int sumOfUnique(vector<int> &nums) { int ans = 0; unordered_map<int, int> state; for (int num : nums) { if (state[num] == 0) { ans += num; state[num] = 1; } else if (state[num] == 1) { ans
-= num; state[num] = 2; } } return ans; } };