CPP取余/取模运算用途整理

取模运算与除法运算区别

除法和取余(模运算)在数学中是密切相关的运算。在整数除法中,比如5除以3,结果是1余2。这里的1是商,2是余数。

在C++等编程语言中,除法运算符(/)用来求商,模运算符(%)用来求余数
所以,5 / 3 的结果是 1,5 % 3 的结果是 2。

取模重要用途:循环索引

在C++中,取余(或称为取模)操作有很多用途。大多数用途,是用于环形数组之中,通过取模%运算循环遍历数组

由于取模运算的特性, i初始值=0,那么i%nums.size()这个式子就是0--nums.size()-1循环取值。

  • 当i初始值=0时,i%a的范围就是[0,a-1]

因为 “求模” 运算的定义是 “求余数”。例如,当 7 除以 3,结果是 2 余 1,所以 7%3 的结果是 1。余数总是会小于除数的,所以 i%a 的结果将始终在 0 到 a-1 的范围内

i 小于 a 时,i%a 的结果就是 i 自己;当 i 等于 a 时,i%a 的结果就是 0;当 i 大于 a 时,i%a 的结果就是 i-a 的值,直到这个值小于 a 为止。

循环索引示例

leetcode503.下一个最大元素Ⅱ

本题是环形数组,需要遍历两遍原来的nums数组,才能得到环形数组每个元素的下一个最大元素。

遍历两遍的逻辑:

st.push(0);
for(int i=1;i<nums.size()*2;i++){
   
    if(nums[i%nums.size()]<=nums[st.top()]){
   
        st.push(i%nums.size());
    }
    else{
   
        while(nums[i%nums.size()]>nums[st.top()]&&!st.empty()){
   
            result
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值