累加思想与计数器思想

简介: 累加思想与计数器思想

1.累加思想:


1.1 原理


通过变量记录住每次变化的结果;通过循环的形式,进行累加动作。


note:


一般情况下,当循环次数明确的时候用for语句,当循环次数未知的时候用while语句。

由于累加思想是主要通过for循环语句实现的(当然用while语句也可以),为便于记忆,我个人习惯称“累加思想就是‘for语句’”。


1.2 举例


问题:实现1到100的整数和


思路:1)明确有两个变量:a、sum。a代表整数,sum用来记录住整数相加之和的变化结果


2)实现累加和,可以用for循环语句,也可以用while循环语句实现。由于变量a只在循环语句中使用,使用for循环语句更加节省内存空间。故本题使用for语句最合适。


代码实现:


class  ForTest
{
  public static void main(String[] args) 
  {
  /*此题最适合for语句。因为变量a在循环语句中用完,之外不需要再用,从而节省内存空间。*/
      int sum=0;  //声明变量sum并赋初值,用来记录每次相加的和
        for(int a=1;a<=100;a++)  //用for语句实现,这个累加的过程也就是累加思想
    {
      sum=sum+a;  
    }
    System.out.println("1到100的和为:"+sum);
  }
}

2.计数器思想:


2.1 原理


通过一个变量来记住数据的不断变化,也是通过循环完成的。


note:一般情况下,当循环次数明确的时候循环用for语句,当循环次数未知的时候循环用while语句。


由于计数器思想是主要通过for循环语句内嵌套if条件语句实现的,为便于记忆,我个人习惯称“计数器思想就是‘for(if)语句’”。


2.2 举例


问题:实现1到100之间9的倍数的个数,并输出


思路:1)需要2个变量:x、y;x代表一个整数变量,y用来记录计算结果的个数


2)用for(if)语句实现结果:先对1到100进行循环。在循环的过程中,定义条件。只对9的倍数进行操作。因为9的倍数不确定,只要符合条件,就通过一个变量y来记录住这个变化的次数。


代码实现:

class  ForTest 
{  
    public static void main(String[] args)   
    {  
        int y=0;         //y为记录9的倍数的个数  
        for(int x=1;x<=100;x++)  
        {  
          if(x%9==0)  
          {  
             System.out.println("1到100内9的倍数为:"+x); //输出所有100以内9的倍数的值  
             y++;  
          }  
        }  
        System.out.println("1到100内9的倍数的个数为:"+y);  
    }  
}  
目录
相关文章
|
3月前
|
算法 测试技术 C++
【数据结构】【双堆】【滑动窗口】3013. 将数组分成最小总代价的子数组 II
【数据结构】【双堆】【滑动窗口】3013. 将数组分成最小总代价的子数组 II
|
3月前
|
算法 测试技术 C++
【动态规划】【前缀和】【数学】2338. 统计理想数组的数目
【动态规划】【前缀和】【数学】2338. 统计理想数组的数目
|
4天前
|
算法 测试技术 C++
【动态规划 状态机dp 性能优化】3098. 求出所有子序列的能量和
【动态规划 状态机dp 性能优化】3098. 求出所有子序列的能量和
【动态规划 状态机dp 性能优化】3098. 求出所有子序列的能量和
|
3月前
|
算法 测试技术 C++
【动态规划】【C++算法】801. 使序列递增的最小交换次数
【动态规划】【C++算法】801. 使序列递增的最小交换次数
|
3月前
|
算法 C语言
求解亲密数代码剖析
求解亲密数代码剖析
|
5月前
|
设计模式 算法 Java
【数据结构和算法】无限集中的最小数字
这是力扣的2336题,难度为中等,解题方案有很多种,本文讲解我认为最奇妙的一种。使用TreeSet和min变量来维护一个无限集合,保证集合的连续性。添加元素时,若元素大于等于min,则不添加;若元素小于min,则将其添加到TreeSet中。删除元素时,先判断TreeSet是否为空,若不为空,则从TreeSet中删除元素;若为空,则将min值加1。该算法能够高效地添加和删除元素,并保持集合的连续性。该算法还可以用优先队列(小根堆)+ hash表解题,比较优秀。
30 1
|
8月前
|
算法
Shifting Stacks (递增思想特例化)
Shifting Stacks (递增思想特例化)
30 0
|
10月前
|
算法 测试技术 索引
【算法与数据结构】4 算法利器,详解循环不变量与复杂度分析
【算法与数据结构】4 算法利器,详解循环不变量与复杂度分析
116 0
|
11月前
|
算法 搜索推荐 C++
经典算法冒泡排序之标志位优化版
经典算法冒泡排序之标志位优化版
101 0
|
前端开发 搜索推荐 算法
数据结构和算法基础之时间复杂度为O(n²)排序(偏向前端方向)
在实际项目开发中,不管是后端还是前端,最基本的操作就是数据的CRUD。换句话说,后端是根据某些条件组装数据,前端是拿着后端提供的数据,进行数据展示。但是不管在进行数据封装还是展示,其中在特定的场景下,需要根据某些条件,对数据进行排序。而在既定的现有框架下,都有现成的方法对数据进行排序处理。 但是,在开发中,有没有想过,这些排序底层是如何实现的,还有就是针对不同的数据,不同的排序是否在性能方面有不同的体现。
104 0
数据结构和算法基础之时间复杂度为O(n²)排序(偏向前端方向)