zoukankan      html  css  js  c++  java
  • 算法题:找出一个数组中相加值最大的连续序列元素

    package arithmetic;
    
    /**
     * @author SHI
     * 求一个数组中相加值最大的连续序列元素
     */
    public class MaxSequence {
        
        public static void main(String[] args) {
            int[] a=new int[]{-2,9,-3,4,-6,7,-6,4};
            findBigSequence(a);
        }
        
        /**
         * 思想: (1)计算出该数组的所有元素和,假设该值为最大
         *       (2)从数组下标1到a.length-1依次求和,每循环求得一个值就与假设的最大值比较
         * @param a
         */
        public static void findBigSequence(int[] a) {
            int sum = 0;
            for(int i=0;i<a.length;i++) {
                sum += a[i];
            }
    
            int max = sum;
            int start = 1;
            int flag = 0;
            int sum1 = 0;
            //比较,满足条件就交换
            for(;start<a.length;start++) {
                sum1 += a[start];
                if(max < sum1) {
                    max = sum1;
                    flag = start;
                }
            }
            //打印找到的序列元素
            for(int i = 0;i<flag;i++) {
                System.out.print(a[i] + " ");
            }
        }
    }
  • 相关阅读:
    自定义拦截器
    MVP模式网络请求购物车
    mvp+RecyclerView实现网络请求
    二维码扫描
    进度条加载
    画圆移动
    简单排序
    批量发货
    Angular服务
    终极购物车
  • 原文地址:https://www.cnblogs.com/shi-blog/p/4254586.html
Copyright © 2011-2022 走看看