【C++】【Leetcode 169】基于范围的 for 循环:range-based for loop

138 阅读1分钟

一、简介

这种循环写法是C++11引入的一种新的循环语法,称为范围-based for循环(range-based for loop)或者简称为foreach循环。

在这种循环中,可以遍历一个可迭代对象(如数组、容器等)中的元素,而不需要使用传统的索引方式进行遍历。

语法如下:

for(elemType elem: object) { 
    statements ;
}

每次循环中,elem都会被赋值为object中的一个元素,循环体中的代码可以使用elem来操作当前遍历到的元素。

二、例子

Leetcode 169:多数元素

给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。

思路:通过使用无序映射来统计数组中每个元素的出现次数,找出出现次数最多的元素作为主要元素。也通过范围-based for循环方便地对容器进行遍历。再通过“打擂台”的方式,维护变量majority

public:
    int majorityElement(vector<int>& nums) {
        unordered_map<int, int> counts;    //unordered_map,用于记录元素出现次数
        int majority = 0, cnt = 0;
        for (int num: nums) {          
            ++counts[num];
            if (counts[num] > cnt) {
                majority = num;
                cnt = counts[num];
            }
        }                         //范围-based for循环
        return majority;
    }