日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

My Fifty-Seventh Page 递增子序列 - By Nicolas

發布時間:2023/12/16 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。