V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Newyorkcity
V2EX  ›  问与答

请问这种题目怎么 dp 啊?

  •  
  •   Newyorkcity · Apr 21, 2020 · 576 views
    This topic created in 2197 days ago, the information mentioned may be changed or developed.

    https://leetcode-cn.com/problems/freedom-trail/

    别的不说,就比如在前往 key[i] 时,逆时针和顺时针波动以到达的一个最近位置的花费是一样的,dp 如何表达这件事?

    dfs 用过了,超时。。。

    import java.util.HashMap;
    import java.util.HashSet;
    import java.util.Map;
    import java.util.Set;
    
    public class Solution {
    
        private String rring;
        private String kkey;
        private Map<Character, Set<Integer>> ringMap;
        private int ans = Integer.MAX_VALUE;
    
        public int findRotateSteps(String ring, String key) {
            rring = ring;
            kkey = key;
            ringMap = new HashMap<>();
            for (int i = 0; i < ring.length(); i++) {
                char c = ring.charAt(i);
                Set<Integer> set = ringMap.getOrDefault(c, new HashSet<Integer>());
                set.add(i);
                ringMap.put(c, set);
            }
            dfs(0, 0, 0);
            return ans;
        }
    
        public void dfs(int keyIdx, int nowIdx, int stepCounter) {
            if (keyIdx == kkey.length()) {
                ans = Math.min(ans, stepCounter);
                return;
            }
            Character ch = kkey.charAt(keyIdx);
            for (Integer nextIdx : ringMap.get(ch)) {
                dfs(keyIdx + 1, nextIdx, stepCounter + 1 + distanceCounter(nowIdx,
                        nextIdx));
            }
    
        }
    
        public int distanceCounter(int nowIdx, int nextIdx) {
            int a = Math.abs(nextIdx - nowIdx);
            int b = rring.length() - a;
            return Math.min(a, b);
        }
    }
    

    谢谢

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4761 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 00:13 · PVG 08:13 · LAX 17:13 · JFK 20:13
    ♥ Do have faith in what you're doing.