zoukankan      html  css  js  c++  java
  • 最大礼物数

    动态规划,典型最大礼物数

    public static void main1() {
            int num[][] = new int[][]{
                    {1, 3, 6, 8, 9},
                    {1, 6, 1, 3, 0},
                    {2, 6, 5, 4, 1},
            };
    
            int rows = num.length;
            int cols = num[0].length;
    
            int dp[][] = new int[rows][cols];
            dp[0][0] = num[0][0];
    
            for (int i = 1; i < cols; i++) {
                dp[0][i] = dp[0][i - 1] + num[0][i];
            }
            for (int i = 1; i < rows; i++) {
                dp[i][0] = dp[i - 1][0] + num[i][0];
            }
    
            for (int i = 1; i < rows; i++) {
                for (int j = 1; j < cols; j++) {
                    dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]) + num[i][j];
                }
            }
    
            System.out.println(dp[rows-1][cols-1]);
        }

     最大字符串长度

    public static void main2() {
            String rou_chuan = "abcabcdbb";
    
            char ary[] = rou_chuan.toCharArray();
    
            Map<Character, Integer> map = new HashMap();
            map.put(ary[0], 0);
            int maxLength = 1;
            int li = 0;
            for (int i = 1; i < ary.length; i++) {
                char currChar = ary[i];
                int pi = map.getOrDefault(currChar, -1);
    
                if (pi >= li) {
                    li = pi + 1;
                }
    
                map.put(currChar, i);
                if ((i - li + 1) > maxLength) {
                    maxLength = i - li + 1;
                }
            }
    
            System.out.println(maxLength);
        }

     冒泡排序,对有序数组的优化

    int a[] = {99, 1, 2, 55, 6, 199, 3, 10, -1};
            for (int j = 0; j < a.length; j++) {
                int index = a.length;
                for (int i = 1; i < a.length - j; i++) {
                    if (a[i] < a[i - 1]) {
                        int tmp = 0;
                        tmp = a[i];
                        a[i] = a[i - 1];
                        a[i - 1] = tmp;
                        index = a.length - i - 1;
                    }
                }
                j = index;
            }

     归并排序,时间复杂度nlogn

    public static void splitter(int data[], int beginIdx, int endIdx) {
            if (beginIdx >= endIdx) return;
    
            int middleIdx = (beginIdx + endIdx) >> 1;
            splitter(data, beginIdx, middleIdx);
            splitter(data, middleIdx + 1, endIdx);
            merge(data, beginIdx, middleIdx, endIdx);
        }
    
        private static void merge(int[] data, int beginIdx, int middleIdx, int endIdx) {
            int[] tmp = new int[endIdx - beginIdx + 1];
            int leftIdx = beginIdx;
            int rightIdx = middleIdx + 1;
            int tmpIdx = 0;
            for (; leftIdx <= middleIdx && rightIdx <= endIdx; ) {
                int leftItem = data[leftIdx];
                int rightItem = data[rightIdx];
                if (leftItem >= rightItem) {
                    tmp[tmpIdx] = rightItem;
                    rightIdx++;
                } else if (leftItem < rightItem) {
                    tmp[tmpIdx] = leftItem;
                    leftIdx++;
                }
                tmpIdx++;
            }
    
            for (; leftIdx <= middleIdx; ) {
                tmp[tmpIdx] = data[leftIdx];
                tmpIdx++;
                leftIdx++;
            }
    
            for (; rightIdx <= endIdx; ) {
                tmp[tmpIdx] = data[rightIdx];
                tmpIdx++;
                rightIdx++;
            }
    
            tmpIdx = 0;
            for (int i = beginIdx; i <= endIdx; i++) {
                data[i] = tmp[tmpIdx++];
            }
        }
  • 相关阅读:
    JSON1
    program的发展史及两个方法
    统计字符出现的次数
    美国十大web2.0公司背后的故事
    web history-----JavaScript 的起源故事
    Baidu_Map
    My json(Demo)
    program发展史及 forecast
    js事件类型
    字符统计与正则表达式
  • 原文地址:https://www.cnblogs.com/zzq-include/p/12966552.html
Copyright © 2011-2022 走看看