LeetBoss

这篇博客里记录俩类题目 

1. AC 15%一下

2. 经典DP

BOSS 1 : Word Ladder

Given two words (beginWord and endWord), and a dictionary, find the length of shortest transformation sequence from beginWord to endWord, such that:

  1. Only one letter can be changed at a time
  2. Each intermediate word must exist in the dictionary

For example,

Given:
start = "hit"
end = "cog"
dict = ["hot","dot","dog","lot","log"]

As one shortest transformation is "hit" -> "hot" -> "dot" -> "dog" -> "cog",
return its length 5.


先看一段吉祥三宝的分析,个人认为是这个题目最好大理解方式。

"

Analysis:

This problem can be abstracted as a tree level-order traversal problem. In binary tree level-order traversal, we find the next level node via the left and right pointer, but in this problem, we search the string in dictionary, if the their distance is 1, we add it to queue for next level traversal, and delete it from queue.

To record the distance, we also maintain another queue, in which stores the current string’s distance to the root string.

When we delete a string from dict, it is possible that the deleted string will be used in another path. To illustrate this problem, see:

(1) When dogs are in the same level:

        hot
        / 
      hog  dot
       |    |
      dog  dog
       |    |
      dig  dig

Where start is “hot”, and end is “dig”, when we visit hot->hog->dog, dog is deleted, but dog is also needed in hot->dot->dog. When dog are in the same level, it is fine since the distance is the same.

(2) When dog is reused in deeper level, see:

        hot
        / 
      hog  dot
       |    |
      dog  dot
       |    |
      dig  dag
            |
           dog
            |
           dig

It is still fine. Because the minimum distance is already found when dog needs to be reused.

The search of possible 1-distance strings takes O(N*L) time, where N is the number of alphabetical letters, and L is the length of a string in dictionary

"分析来自

---吉祥三宝的博客


代码相对清晰,简洁。注意return 的时候不需要加一,加一是在把该item存入queue的时候做的,所以在item入queue时候,对应的存距离的queue2里存的就是它最终的距离。

然后这里记录的是每个item 的距离,不需要level这个概念了。也就不需要一层一层处理,直接一个一个来。

    public int ladderLength(String start, String end, Set
   
   
    
     dict) {
        //Just another version of lvl order traversal of BFS
        LinkedList
    
    
     
      q1 = new LinkedList
     
     
      
      ();
        LinkedList
      
      
       
        q2 = new LinkedList
       
       
         (); dict.add(end); q1.add(start); q2.add(1);//q2 record the distance(no. of items) from start to the corresponding str in q1 while(!q1.isEmpty()){ String item = q1.poll(); int minDist = q2.poll(); if(item.equals(end)) return minDist; //add all possible edges of current item to expand nxt lvl //after the last item of current lvl is processed, we have a complete list of items of nxt lvl in our queue then //we don't need to differentiate lvl here, just go till the end, because we keep distance for each item but for lvl for(int i=0; i 
         
       
      
      
     
     
    
    
   
   

BOSS2 : Word Break

Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separated sequence of one or more dictionary words.

For example, given
s = "leetcode",
dict = ["leet", "code"].

Return true because "leetcode" can be segmented as "leet code".

这个题做了多少遍了,每一遍对这个DP都有新的认识。。。

这个题我在我DP之章里分析写的很细了,这里不重复里。

这个题recursion和dp俩个方法很绕,正好反着,但是如果真正理解了,也不会混淆。

这个题recursion就简单很多,包括Word Break2, 都是很经典的Back Tracking的题目。

 public boolean wordBreak(String s, Set
    
    
     
      wordDict) {
        boolean[][] dp = new boolean[s.length()][s.length()];

        for(int i=s.length()-1;i>=0;i--){
            for(int j=i; j
     
     
    
    

同时我把  palindrome partition || 的DP做法也放在这里,这俩道题神似。




内容概要:本文深入探讨了折扣店快消品定价的研究,涵盖快消品与折扣店行业的概述、定价影响因素、定价策略、定价方法、定价技巧及案例分析。快消品行业涉及日常生活用品、食品、饮料等,具有高频次和重复购买的特点。折扣店市场规模不断扩大,主要参与者包括赵一鸣、好特卖等。影响定价的因素包括成本(生产、库存、物流)、市场需求(规模、购买力、需求弹性)、竞争(对手定价策略、市场份额)、产品特性(差异化、品牌形象)、渠道与分销成本、政府政策等。定价策略分为成本导向(成本加成、目标收益)、需求导向(理解价值、需求差异)和竞争导向(随行就市、投标定价)。定价方法包括市场调研、成本加成、竞争比较和价值定价。定价技巧涵盖高价撇脂、渗透定价、价格歧视和捆绑定价。最后通过好特卖、嗨特购、零食很忙的案例分析,展示了不同折扣店的定价策略及其效果。 适合人群:从事快消品行业、折扣店运营的管理人员及对定价策略感兴趣的商业人士。 使用场景及目标:①帮助折扣店管理者了解定价的基本理论和实际操作方法;②为快消品企业提供定价决策支持,优化定价策略;③通过案例分析,提供实际操作中的经验和教训。 其他说明:折扣店在制定快消品定价时,应综合考虑多种因素,灵活运用不同的定价策略和技巧,以应对市场变化,提升竞争力。建议企业定期监控市场动态,分析消费者反馈,不断优化定价方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值