9.5 cc dp-rotate now

9.1] Climbing Stairs

    int climbStairs(int n) {
        if (n<0) return 0;
    
        queue<int> q ({1, 1});
        for (int i=2; i<=n; ++i) {
            q.push(q.front()+q.back());
            q.pop();
        }
        return q.back();
    }

LIC

  • dp O(n^2)
    lenLIS[i] = max (lenLIS[j] + 1), where nums[j]<nums[i] and j<i and i>0

  • improved w/ binary search O(nlogn)
    // vector<int> LIS(n, -1); // stores the actual LIS, initialize [0] to be 1
    // int lasti = 0; // end pointer points to last char of LIS
    // LIS[lasti] = nums[0];

      // for (int curr=1; curr<n; ++curr) {
      //     if (LIS[lasti] < nums[curr]) {
      //         LIS[++lasti] = nums[curr];
      //     } else {
      //         //binary search to find a pos to push: s.t. leftmost pos that nums[pos] > nums[curr]
      //         int low = 0, high = lasti, mid = -1;
      //         while (low<high) {
      //             mid = low + (high-low)/2;
      //             if (LIS[mid] < nums[curr]) {
      //                 low = mid+1;
      //             } else {
      //                 high = mid;
      //             }
      //         }
      //         LIS[low] = nums[curr];
      //     }
      // } // end for
      // return lasti+1;
    

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 11,765评论 0 33
  • 回溯算法 回溯法:也称为试探法,它并不考虑问题规模的大小,而是从问题的最明显的最小规模开始逐步求解出可能的答案,并...
    fredal阅读 12,171评论 0 88
  • 对于下面一个序列: 2,1,5,3,6,4,8,9,7 求其最长递增子序列(可以不连续但顺序不可变) 解法一:动态...
    LamyGoGoGo阅读 892评论 0 0
  • 不知道别人是什么体会,但是自从我当了妈妈以后,我的时间就明显不够用了,也明显觉得我迫切需要在我的时间里,做一些滋养...
    彭小刀阅读 193评论 0 2
  • 有没有这样一个人,让你对他叽叽喳喳,说不停?又是否曾有一个人,对你叽叽喳喳,没完没了? 你被嫌弃过吗?你又嫌弃...
    辰熙小主阅读 162评论 0 0
  • 昨天我做了一个梦,在梦里,我终于看到了雪,醒了,我想我可能是期待冬天了!
    白干安喵阅读 31评论 0 1