My Fifty-Seventh Page 递增子序列 - By Nicolas
生活随笔
收集整理的這篇文章主要介紹了
My Fifty-Seventh Page 递增子序列 - By Nicolas
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這篇page是針對leetcode上的491.遞增子序列所寫的。小尼先簡單的說明一下這道題的意思,首先就是給出一個整數數組nums,找出并且返回所有改數組中不同的遞增子序列,要求是子序列中至少有兩個元素。
小尼先跟大家簡單的分析一下這道題,其實這道題的思路并不復雜,首先給出的數組是有順序的,然后給出的數組只需要寫出遞增的數組。小倪先拉一下代碼:
class Solution {private List<Integer> path = new ArrayList<>();private List<List<Integer>> res = new ArrayList<>();public List<List<Integer>> findSubsequences(int[] nums) {backtracking(nums,0);return res;}private void backtracking (int[] nums, int start) {if (path.size() > 1) {res.add(new ArrayList<>(path));}int[] used = new int[201];for (int i = start; i < nums.length; i++) {if (!path.isEmpty() && nums[i] < path.get(path.size() - 1) ||(used[nums[i] + 100] == 1)) continue;used[nums[i] + 100] = 1;path.add(nums[i]);backtracking(nums, i + 1);path.remove(path.size() - 1);}} }小尼對上面的代碼做一下解釋,首先就是我們int了一個used數組,然后我們寫了這一句判斷:
if (!path.isEmpty() && nums[i] < path.get(path.size() - 1) || (used[nums[i] + 100] == 1)) continue;
也就是說如果此時數組中的元素的值不為空,并且此時的值如果小于我們加入了path里面的此時最后一數的值,那么我們直接跳過這一層循環,直接進入下一層循環,然后們標記此時的used中對應的數值為1,小尼在這里簡單的說明一下used數組的作用,起始就是我們的每一個元素座位開頭字母使用的時候我們都只能使用一次,所以我們這里寫了一個額外的數組以便來進行比較我們的開頭的數組是否重復,當我們遇到了重復的元素我們就直接跳過。
希望小伙伴可以得到幫助
總結
以上是生活随笔為你收集整理的My Fifty-Seventh Page 递增子序列 - By Nicolas的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 弹簧(压簧)力度计算与设计
- 下一篇: 苹果10月23日或发布iPad mini