zoukankan      html  css  js  c++  java
  • 剑指offer第七天

    30.连续子数组的最大和

    HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?(子向量的长度至少是1)

    public class Solution {
        public int FindGreatestSumOfSubArray(int[] array) {
            //当输入无效时,返回0
            if(array == null || array.length == 0) return 0;
            int[] DP = new int[array.length];
            DP[0] = array[0];
            int max = DP[0];
            for(int i = 1; i < array.length ; i++){
                //DP[i]表示以array[i]为结尾的最大连续子序列
                DP[i] = Math.max(DP[i-1]+array[i],array[i]);
                max = Math.max(max,DP[i]);
            }
            return max;
        }
    }
    

    31.1~n整数中1出现的次数

    输入一个整数n,求1~ n个整数的十进制表示中1出现的次数,例如:输入13,1~13中包含1的数字有1、10、11、12、13因此共出现6次。

    解题思路:

    思路:
    n中每一位数字对整体“1”数量的影响包括一下两个方面:

    1. 若第i位大于1,则该位1的个数位,高于i的位组成的数字+1倍的10^i;
    2. 若第i位等于1,则该位1的个数位,高于i的位组成的数字倍的10^i加上后面各位组成的数字加1;
    3. 若第i位小于1,则该位1的个数位,高于i的位组成的数字倍的10^i;
    import java.util.ArrayList;
    public class Solution {
        public int NumberOf1Between1AndN_Solution(int n) {
        	if(n<=0) return 0;
            //用于将int的每一位数字保存在int[]数组中
            ArrayList<Integer> number = new ArrayList<>();
            int totalNums = 0;
            //已分析过的高位数字组成的乘子
            int mult = 0;
            int temp = n;
            while(temp!=0){
                number.add(temp%10);
                temp = temp/10;
            }
            for(int i = number.size()-1;i>=0;i--){
                int nums = (int)(Math.pow(10,i));
    			if(number.get(i) == 1){
                    totalNums += (int)(n % Math.pow(10,i) + 1);
                }else if(number.get(i) > 1){
                    totalNums += (int)(Math.pow(10,i));
                }else if(number.get(i) == 0){
                }
                totalNums += mult * nums;
                mult = mult * 10 + number.get(i);
            }
            return totalNums;
        }
    }
    
  • 相关阅读:
    day3
    day2
    day1-存储
    day5-iptables
    MySQL之补充
    11.18
    11.17
    junit基础学习之-测试controller层(2)
    junit基础学习之-简介(1)
    外键和级联
  • 原文地址:https://www.cnblogs.com/guoyaohua/p/8440081.html
Copyright © 2011-2022 走看看