{"id":156420,"date":"2020-09-17T17:16:29","date_gmt":"2020-09-17T09:16:29","guid":{"rendered":"http:\/\/4563.org\/?p=156420"},"modified":"2020-09-17T17:16:29","modified_gmt":"2020-09-17T09:16:29","slug":"google-%e9%9d%a2%e8%af%95%e9%a2%98%ef%bc%9a%e5%ba%8f%e5%88%97%e9%87%8d%e6%9e%84","status":"publish","type":"post","link":"http:\/\/4563.org\/?p=156420","title":{"rendered":"Google \u9762\u8bd5\u9898\uff1a\u5e8f\u5217\u91cd\u6784"},"content":{"rendered":"<div>\n<div>\n<div>\n<h1>                  Google \u9762\u8bd5\u9898\uff1a\u5e8f\u5217\u91cd\u6784               <\/h1>\n<p> <\/p>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : zzzrf <\/span>  <span><i><\/i> 9<\/span> <\/div>\n<div> <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div isfirst=\"1\"> <\/p>\n<h4>LintCode VIP \u6708\u5361 \u00a539.9\uff0c\u2192\u70b9\u6b64\u5904\u94fe\u63a5\u9009\u62e9\u8d2d\u4e70\u6708\u5361\uff0c\u8f93\u5165\u4f18\u60e0\u7801 7EBE50\uff0c\u5373\u53ef 39.9 \u8d2d\u4e70\uff0c\u611f\u5174\u8da3\u7684\u53ef\u4ee5\u7528\u4e00\u4e0b~<\/h4>\n<p>\u5224\u65ad\u662f\u5426\u5e8f\u5217 org \u80fd\u552f\u4e00\u5730\u7531 seqs \u91cd\u6784\u5f97\u51fa. org \u662f\u4e00\u4e2a\u7531\u4ece 1 \u5230 n \u7684\u6b63\u6574\u6570\u6392\u5217\u800c\u6210\u7684\u5e8f\u5217\uff0c1\u2264n\u226410^4 \u3002 \u91cd\u6784\u8868\u793a\u7ec4\u5408\u6210 seqs \u7684\u4e00\u4e2a\u6700\u77ed\u7684\u7236\u5e8f\u5217 (\u610f\u601d\u662f\uff0c\u4e00\u4e2a\u6700\u77ed\u7684\u5e8f\u5217\u4f7f\u5f97\u6240\u6709 seqs \u91cc\u7684\u5e8f\u5217\u90fd\u662f\u5b83\u7684\u5b50\u5e8f\u5217). \u5224\u65ad\u662f\u5426\u6709\u4e14\u4ec5\u6709\u4e00\u4e2a\u80fd\u4ece seqs \u91cd\u6784\u51fa\u6765\u7684\u5e8f\u5217\uff0c\u5e76\u4e14\u8fd9\u4e2a\u5e8f\u5217\u662f org \u3002<\/p>\n<p>\u5728\u7ebf\u505a\u9898\u5730\u5740<\/p>\n<h2>\u6837\u4f8b 1:<\/h2>\n<pre><code>\u8f93\u5165:org = [1,2,3], seqs = [[1,2],[1,3]] \u8f93\u51fa: false \u89e3\u91ca: [1,2,3] \u5e76\u4e0d\u662f\u552f\u4e00\u53ef\u4ee5\u88ab\u91cd\u6784\u51fa\u7684\u5e8f\u5217\uff0c\u8fd8\u53ef\u4ee5\u91cd\u6784\u51fa [1,3,2] <\/code><\/pre>\n<h2>\u6837\u4f8b 2:<\/h2>\n<pre><code>\u8f93\u5165: org = [1,2,3], seqs = [[1,2]] \u8f93\u51fa: false \u89e3\u91ca: \u80fd\u91cd\u6784\u51fa\u7684\u5e8f\u5217\u53ea\u6709 [1,2]. <\/code><\/pre>\n<h2>\u6837\u4f8b 3:<\/h2>\n<pre><code>\u8f93\u5165: org = [1,2,3], seqs = [[1,2],[1,3],[2,3]] \u8f93\u51fa: true \u89e3\u91ca: \u5e8f\u5217 [1,2], [1,3], \u548c [2,3] \u53ef\u4ee5\u552f\u4e00\u91cd\u6784\u51fa [1,2,3]. <\/code><\/pre>\n<h2>\u6837\u4f8b 4:<\/h2>\n<pre><code>\u8f93\u5165:org = [4,1,5,2,6,3], seqs = [[5,2,6,3],[4,1,5,2]] \u8f93\u51fa:true <\/code><\/pre>\n<h1>[\u9898\u89e3]<\/h1>\n<p> <\/p>\n<p>\u4e5d\u7ae0\u7b97\u6cd5\u73ed\u91cc\u8bb2\u8fc7\u7684\u62d3\u6251\u6392\u5e8f\uff0c\u53ea\u8981\u4fdd\u8bc1 queue \u91cc\u6700\u591a\u540c\u65f6\u53ea\u6709\u4e00\u4e2a\u5143\u7d20\u5373\u53ef\u3002 \u6240\u4ee5\u8fd9\u662f queue \u7528 list \u7136\u540e\u6bcf\u6b21 pop \u4e5f\u53ef\u4ee5\uff0c\u53cd\u6b63\u53ea\u6709\u4e00\u4e2a\u6570\u3002<\/p>\n<pre><code>public class Solution {     \/**      * @param org: a permutation of the integers from 1 to n      * @param seqs: a list of sequences      * @return: true if it can be reconstructed only one or false      *\/     public boolean sequenceReconstruction(int[] org, int[][] seqs) {         Map&lt;Integer, Set&lt;Integer&gt;&gt; graph = buildGraph(seqs);         List&lt;Integer&gt; topoOrder = getTopoOrder(graph);                  if (topoOrder == null || topoOrder.size() != org.length) {             return false;         }         for (int i = 0; i &lt; org.length; i++) {             if (org[i] != topoOrder.get(i)) {                 return false;             }         }         return true;     }          private Map&lt;Integer, Set&lt;Integer&gt;&gt; buildGraph(int[][] seqs) {         Map&lt;Integer, Set&lt;Integer&gt;&gt; graph = new HashMap();         for (int[] seq : seqs) {             for (int i = 0; i &lt; seq.length; i++) {                 if (!graph.containsKey(seq[i])) {                     graph.put(seq[i], new HashSet&lt;Integer&gt;());                 }             }         }         for (int[] seq : seqs) {             for (int i = 1; i &lt; seq.length; i++) {                 graph.get(seq[i - 1]).add(seq[i]);             }         }         return graph;     }          private Map&lt;Integer, Integer&gt; getIndegrees(Map&lt;Integer, Set&lt;Integer&gt;&gt; graph) {         Map&lt;Integer, Integer&gt; indegrees = new HashMap();         for (Integer node : graph.keySet()) {             indegrees.put(node, 0);         }         for (Integer node : graph.keySet()) {             for (Integer neighbor : graph.get(node)) {                 indegrees.put(neighbor, indegrees.get(neighbor) + 1);             }         }         return indegrees;     }          private List&lt;Integer&gt; getTopoOrder(Map&lt;Integer, Set&lt;Integer&gt;&gt; graph) {         Map&lt;Integer, Integer&gt; indegrees = getIndegrees(graph);         Queue&lt;Integer&gt; queue = new LinkedList();         List&lt;Integer&gt; topoOrder = new ArrayList();                  for (Integer node : graph.keySet()) {             if (indegrees.get(node) == 0) {                 queue.offer(node);                 topoOrder.add(node);             }         }                  while (!queue.isEmpty()) {             if (queue.size() &gt; 1) {                 return null;             }                          Integer node = queue.poll();             for (Integer neighbor : graph.get(node)) {                 indegrees.put(neighbor, indegrees.get(neighbor) - 1);                 if (indegrees.get(neighbor) == 0) {                     queue.offer(neighbor);                     topoOrder.add(neighbor);                 }             }         }                  if (graph.size() == topoOrder.size()) {             return topoOrder;         }                  return null;     } } <\/code><\/pre>\n<p>\u66f4\u591a\u9898\u89e3\u53c2\u8003<\/p>\n<h4>LintCode VIP \u6708\u5361 \u00a539.9\uff0c\u2192\u70b9\u6b64\u5904\u94fe\u63a5\u9009\u62e9\u8d2d\u4e70\u6708\u5361\uff0c\u8f93\u5165\u4f18\u60e0\u7801 7EBE50\uff0c\u5373\u53ef 39.9 \u8d2d\u4e70\uff0c\u611f\u5174\u8da3\u7684\u53ef\u4ee5\u8bd5\u7528\u4e00\u4e0b~<\/h4>\n<\/p><\/div>\n<div> <b>\u5927\u4f6c\u6709\u8a71\u8aaa<\/b> (<span>0<\/span>)        <\/div>\n<div> <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<ul>\n<li>\n","protected":false},"excerpt":{"rendered":"<p>Google \u9762\u8bd5\u9898\uff1a\u5e8f\u5217\u91cd\u6784 \u8cc7&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[],"tags":[],"_links":{"self":[{"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/posts\/156420"}],"collection":[{"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=156420"}],"version-history":[{"count":0,"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/posts\/156420\/revisions"}],"wp:attachment":[{"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=156420"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=156420"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=156420"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}