【发布时间】:2020-11-25 13:13:45
【问题描述】:
好吧,我正在浏览一些代码,发现了这段代码,对语句 1 感到困惑。
vector<int> v{1,2,3,2};
mp<int,int> m;
for(auto i : v) m[i]++;
int ans = v.size();
for(auto i : v){
ans = min(ans, m[i] + 1 - (v.front() == i) - (v.back() == i)); //statement 1
}
语句 1 背后的逻辑是 如果 v 在前面或末尾包含元素 i,则从 map 中出现的 i 中减去 1。 它以某种方式正常工作,但如何?我以前没有见过这种类型的 if 实现。如果考虑 (v.front() == i) 和 (v.back() == i) 作为 if 语句而不提及任何 if 关键字,有人可以帮助如何声明 1。
【问题讨论】: