狀態機 1748一次遍歷
阿新 • • 發佈:2022-02-06
有限狀態機四大要素
- 現態:當前所處狀態
- 次態:當條件滿足後,即將轉移的下一個狀態
- 動作:當滿足某個事件時執行的動作;動作執行完畢後可以轉移到另一個狀態或保持原有狀態
- 條件:轉移狀態所需的條件,當滿足條件時,會觸發一個動作或進行狀態轉移
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; } };