• RepeatedDNASequences BestTime_to_Buy_and_SellStockIV


    /**
     * @Author: weblee
     * @Email: likaiweb@163.com
     * @Blog: http://www.cnblogs.com/lkzf/
     * @Time: 2015年2月18日上午10:03:42
     * 
     *************        function description ***************
     *
     ****************************************************
     */
    
    public class BestTime_to_Buy_and_SellStockIV {
        public int maxProfit(int k, int[] prices) {
        if (prices.length == 0) {
            return 0;
        }
    
        if (k >= prices.length) {
            return solveMaxProfit(prices);
        }
    
        /*
         * 局部最优值是比较前一天并少交易一次的全局最优加上大于0的差值,
         * 和前一天的局部最优加上差值后相比,两者之中取较大值,
         * 而全局最优比较局部最优和前一天的全局最优 
         */
        int[] global = new int[k + 1];
        int[] local = new int[k + 1];
    
        for (int i = 0; i < prices.length - 1; ++i) {
            int diff = prices[i + 1] - prices[i];
    
            for (int j = k; j >= 1; --j) {
            local[j] = Math.max(global[j - 1] + Math.max(diff, 0), local[j]
                + diff);
    
            global[j] = Math.max(global[j], local[j]);
            }
        }
    
        return global[k];
        }
    
        public static int solveMaxProfit(int[] prices) {
        int result = 0;
    
        for (int i = 1; i < prices.length; i++) {
            if (prices[i] - prices[i - 1] > 0) {
            result += (prices[i] - prices[i - 1]);
            }
        }
    
        return result;
        }
    
    }
    package com.weblee.Medium;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.HashSet;
    import java.util.List;
    import java.util.Map;
    
    /**
     * @Author: weblee
     * @Email: likaiweb@163.com
     * @Blog: http://www.cnblogs.com/lkzf/
     * @Time: 2015年2月18日上午9:20:12
     * 
     *************        function description ***************
     *
     ****************************************************
     */
    
    public class RepeatedDNASequences {
        public List<String> findRepeatedDnaSequences(String s) {
        Map<Integer, Integer> map = new HashMap<Integer, Integer>();
        List<String> result = new ArrayList<String>();
    
        if (s.length() <= 10) {
            return result;
        }
    
        // encode
        char[] convert = new char[26];
        convert[0] = 0;
        convert[2] = 1;
        convert[6] = 2;
        convert[19] = 3;
    
        int hashValue = 0;
    
        /*
         * the first 10 characters string
         */
        for (int pos = 0; pos < 10; ++pos) {
            hashValue <<= 2;
            hashValue |= convert[s.charAt(pos) - 'A'];
        }
    
        // first 10-letter-long sequences encode -> value
        map.put(hashValue, 1);
    
        // remove duplicate
        HashSet<Integer> set = new HashSet<>();
    
        for (int pos = 10; pos < s.length(); ++pos) {
            // left 2 bit, equal to multiply 4
            hashValue <<= 2;
            // the 2 right bit valued encode of s.char(pos) 
            hashValue |= convert[s.charAt(pos) - 'A'];
            // 最高两位置0
            hashValue &= ~(0x300000);
    
            if (!map.containsKey(hashValue)) {
            map.put(hashValue, 1);
            } else {
            if (!set.contains(hashValue)) {
                // 10-letter-long sequences
                result.add(s.substring(pos - 9, pos + 1));
    
                set.add(hashValue);
            }
    
            map.replace(hashValue, 1 + map.get(hashValue));
            }
        }
    
        return result;
        }
    
    }
  • 相关阅读:
    write(byte[] b, int off, int len)
    getAttribute 与getParmeter 区别
    ServletContext
    SercletConfig 详解
    MYSQL导入数据出现ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
    mybatis在xml文件中处理大于号小于号的方法
    阿里云实名认证接口调试
    js encodeuricomponent base64
    Introspector内存溢出的原理解析
    JVM虚拟机工作原理
  • 原文地址:https://www.cnblogs.com/lkzf/p/4319136.html
Copyright © 2020-2023  润新知