美文网首页
7.22-Contest 42-小结

7.22-Contest 42-小结

作者: Get_it | 来源:发表于2017-07-23 13:01 被阅读0次

    645. Set Mismatch

    • 这道题只需确保 i 位置上的数满足 nums[i]==i+1,通过不断换位置即可。
    • time complexity: O(n), space complexity: O(1)
    • 代码如下:
    public class SetMismatch {
      public int[] findErrorNums(int[] nums) {
        // swap and find trick
        int[] res = new int[2];
        // find duplicates
        for (int i = 0; i < nums.length; i++) {
          while (nums[i] != i + 1) {
            int left = nums[i];
            int right = nums[nums[i] - 1];
            swap(nums, i, nums[i] - 1);
            if (left == right) {
              res[0] = left;
              break;
            }
          }
        }
        // find missing
        for (int i = 0; i < nums.length; i++) {
          if (nums[i] != i + 1) {
            res[1] = i + 1;
            break;
          }
        }
        return res;
      }
      private void swap(int[] nums, int i, int j) {
        int tmp = nums[i];
        nums[i] = nums[j];
        nums[j] = tmp;
     }
    }
    

    646. Maximum Length of Pair Chain

    这道题跟 meeting room 的解法类似,使用 greedy 算法。首先根据每个pair的第二个数的大小对所有pair进行排序。然后依次取第二个数最小的pair,如何当前的pair的第一个数比前一个pair的第二个数小则跳过。

    647. Palindromic Substrings

    这道题与在字符串中找最长的回文字符串解法相同,使用 dynamic programming 不断判断对应字符串是否是回文,同时进行统计即可。

    648. Replace Words

    这道题首先根据dict建立一个 multiway trie,然后依次对 sentence 中的 word 在 trie 中查找,取最先达到的字符串作为替换。

    相关文章

      网友评论

          本文标题:7.22-Contest 42-小结

          本文链接:https://www.haomeiwen.com/subject/zrtmkxtx.html