代碼隨想錄算法刷題訓練營day29:LeetCode(491)遞增子序列、LeetCode(46)全排列、LeetCode(47)全排列 II

代碼隨想錄算法刷題訓練營day29:LeetCode(491)遞增子序列、LeetCode(46)全排列、LeetCode(47)全排列 II

LeetCode(491)遞增子序列
題目
在這里插入圖片描述
代碼

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;class Solution {//先取出來再定義一個函數進行判斷public Set<List<Integer>> tempResult=new HashSet<>();public List<Integer> path=new ArrayList<>();public List<List<Integer>> findSubsequences(int[] nums) {int startIndex=0;backtracking(nums,startIndex);List<List<Integer>> result=new ArrayList<>(tempResult);return result;}public void backtracking(int[] nums,int startIndex){if(isSubsequences(path)){List<Integer> tempPath=Arrays.asList(new Integer[path.size()]);Collections.copy(tempPath, path);tempResult.add(tempPath);//子集問題不能加return}for(int i=startIndex;i<nums.length;i++){path.add(nums[i]);backtracking(nums, i+1);path.remove(path.size()-1);}}public boolean isSubsequences(List<Integer> path){boolean flag=true;if(path.size()<2){flag=false;}List<Integer> testPath=Arrays.asList(new Integer[path.size()]);Collections.copy(testPath, path);Collections.sort(testPath);for(int i=0;i<path.size();i++){if(testPath.get(i)!=path.get(i)){flag=false;}}return flag;}
}

LeetCode(46)全排列
題目
在這里插入圖片描述

代碼

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;class Solution {public List<List<Integer>> result=new ArrayList<>();public List<Integer> path=new ArrayList<>();public List<List<Integer>> permute(int[] nums) {int[] used=new int[nums.length];//記錄元素是否被使用int startIndex=0;backtracking(nums,used);        return result;}public void backtracking(int[] nums,int[] used){if(path.size()==nums.length){List<Integer> tempPath=Arrays.asList(new Integer[path.size()]);Collections.copy(tempPath, path);result.add(tempPath);return;}for(int i=0;i<nums.length;i++){if(used[i]==1){continue;//1-1這個分支直接沒有了,直此時就能到1-2了--重點}path.add(nums[i]);used[i]=1;backtracking(nums, used);path.remove(path.size()-1);used[i]=0;//彈出來狀態也得改變}}
}

LeetCode(47)全排列 II
題目
在這里插入圖片描述

代碼

java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;class Solution {public Set<List<Integer>> tempResult=new HashSet<>();//用set集合做public List<Integer> path=new ArrayList<>();public List<List<Integer>> permuteUnique(int[] nums) {int[] used=new int[nums.length];backtracking(nums,used);List<List<Integer>> result=new ArrayList<>(tempResult);return result;}public void backtracking(int[] nums,int[] used){if(path.size()==nums.length){List<Integer> tempPath=Arrays.asList(new Integer[path.size()]);Collections.copy(tempPath, path);tempResult.add(tempPath);return;}for(int i=0;i<nums.length;i++){if(used[i]==1){continue;}path.add(nums[i]);used[i]=1;backtracking(nums, used);path.remove(path.size()-1);used[i]=0;}}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/712183.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/712183.shtml
英文地址,請注明出處:http://en.pswp.cn/news/712183.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2024年AI全景預測

歡迎來到 2024 年人工智能和技術的可能性之旅。 在這里&#xff0c;每一個預測都是一個潛在的窗口&#xff0c;通向充滿創新、變革、更重要的是類似于 1950 年代工業革命的未來。 20 世紀 50 年代見證了數字計算的興起&#xff0c;重塑了行業和社會規范。 如今&#xff0c;人工…

老衛帶你學---leetcode刷題(242. 有效的字母異位詞)

242. 有效的字母異位詞 問題 給定兩個字符串 s 和 t &#xff0c;編寫一個函數來判斷 t 是否是 s 的字母異位詞。 注意&#xff1a;若 s 和 t 中每個字符出現的次數都相同&#xff0c;則稱 s 和 t 互為字母異位詞。 示例 1: 輸入: s “anagram”, t “nagaram” 輸出: t…

力扣1143. 最長公共子序列(動態規劃)

Problem: 1143. 最長公共子序列 文章目錄 題目描述思路復雜度Code 題目描述 思路 我們統一標記&#xff1a;str1[i]代表text1表示的字符數組&#xff0c;str2[j]代表text2表示的字符數組&#xff1b;LCS代表最長的公共子序列&#xff1b;&#xff08;我們易得只有str1[i]和str…

Flutter中Widget的生命周期

Widget生命周期&#xff1a; createState-initState-didChangeDependency-build-deactive-dispose 可通過WidgetsBinding類對widget生命周期的回調進行監控。 createState&#xff1a;StatefulWidget 中用于創建 State&#xff1b; initState&#xff1a;State 的初始化操作&am…

CLion遠程調試C++

文件映射到 可以右鍵文件夾選擇重新Cmake 編譯

xsslabs第七關

源碼 <!DOCTYPE html><!--STATUS OK--><html> <head> <meta http-equiv"content-type" content"text/html;charsetutf-8"> <script> window.alert function() { confirm("完成的不錯&#xff01;"…

【刷題】Leetcode 1609.奇偶樹

Leetcode 1609.奇偶樹 題目描述廣度優先搜索&#xff08;BFS&#xff09;深度優先算法&#xff08;DFS&#xff09; 思路一&#xff08;BFS&#xff09;思路二&#xff08;DFS&#xff09;Thanks?(&#xff65;ω&#xff65;)&#xff89;謝謝閱讀&#xff01;&#xff01;&a…

ShardingSphere Narayana XA 事務不回滾問題定位

ShardingSphere Narayana XA 事務不回滾問題定位 問題背景 用戶反饋&#xff0c;在使用 ShardingSphere Narayana 執行 XA 事務時&#xff0c;發生報錯&#xff1a;java.sql.SQLException: javax.transaction.RollbackException: TransactionImple.enlistResource - ARJUNA0…

數字后端——DEF文件格式

文章目錄 MACRO的不同orientationDEF中在macro orientation定義前需要留空格 MACRO的不同orientation DEF中在macro orientation定義前需要留空格 像下圖中這種方向和分號之間沒有空格的情況&#xff0c;就是有問題的格式。

C語言清空文件夾、C語言判斷文件夾下的文件夾是否存在,如果存在就清空,如果不存在則建立

代碼解法不唯一&#xff0c;請在評論區留下你的實現方式和想法&#xff0c;我會將好的解法更新到文章中&#xff01;&#xff01; 要在C語言中判斷文件夾下的文件夾是否存在&#xff0c;如果存在就清空&#xff0c;如果不存在則建立&#xff0c;需要使用C標準庫中的系統調用或…

數學學習與研究雜志社《數學學習與研究》雜志社編輯部2023年第29期目錄

考試研究 提高高三數學二輪復習質量的思考與實踐 佘淮青; 2-4 提升高三數學復習質量的策略探究 王飛; 5-7 核心素養背景下的高中數學命題策略研究 陳明發; 8-10 提升中考數學復習課的有效性研討 韓興宏; 11-13 中學教學方法《數學學習與研究》投稿&#xff1a;…

將c、c++變為python

1.編寫cpp文件 #include "pycpp.h" #include <iostream>using namespace std;PyCpp::PyCpp(){}void PyCpp::sayHello(int a){cout << "Hello Python, I am C."<<a << endl; }2.編寫頭文件&#xff08;聲明變量&#xff09; clas…

SpringBoot之自定義Redis緩存key的生成策略配置

SpringBoot之自定義Redis緩存key的生成策略配置 文章目錄 SpringBoot之自定義Redis緩存key的生成策略配置1. SpringBoot版本2. Redis緩存配置類 自定義緩存key生成策略&#xff1b;key與value的序列化&#xff1b;key過期配置管理器 1. SpringBoot版本 <parent><group…

pyuic生成py文件到指定文件夾

pyuic生成py文件到指定文件夾 關于如何在pycharm配置外部工具的方法這里不做贅述&#xff0c;本文主要說明&#xff0c;如何利用pyuic將ui文件生成到指定的項目目錄中。 前提條件&#xff1a;已配置的pyuic工具可以正常使用生成文件到目錄中。 一、打開外部工具配置頁面 打開…

如何用Python檢查時間序列數據是否平穩?

時間序列數據通常以其時間性質為特征。這種時間性質為數據增加了趨勢或季節性&#xff0c;使其與時間序列分析和預測兼容。如果時間序列數據不隨時間變化或沒有時間結構&#xff0c;則稱其為靜態數據。因此&#xff0c;檢查數據是否平穩是非常必要的。在時間序列預測中&#xf…

用HTML5的<canvas>元素實現刮刮樂游戲

用HTML5的<canvas>元素實現刮刮樂 用HTML5的<canvas>元素實現刮刮樂&#xff0c;要求&#xff1a;將上面的“圖層”的圖像可用鼠標刮去&#xff0c;露出下面的“圖層”的圖像。 示例從簡單到復雜。 簡單示例 準備兩張圖像&#xff0c;我這里上面的圖像top_imag…

node express實現Excel文檔轉json文件

有些場景我們需要將Excel文檔中的內容抽取出來生成別的文件&#xff0c;作為一個前端&#xff0c;服務框架最應該熟悉的就是node了&#xff0c;以下是基于多語言轉換實現代碼&#xff0c;看明白原理自己改一改就能用了 1.安裝node環境 2.創建一個文件夾&#xff0c;文件夾中創建…

7、Redis-事務、持久化、內存淘汰機制和過期key處理

目錄 一、事務 二、持久化 三、內存淘汰機制 四、過期key處理 一、事務 Redis的事務本質上就是一個批量執行命令的操作。分為三個步驟&#xff1a; 開始事務&#xff1a;multi命令入隊&#xff1a;正常輸入命令即可執行事務&#xff08;依次執行命令&#xff09;&#xf…

掌握java模板方法模式,提升代碼復用與擴展的藝術

Java 模板方法模式是一種行為型設計模式&#xff0c;它定義了一個算法的骨架&#xff0c;并將一些步驟延遲到子類中實現。模板方法模式使得子類可以在不改變算法結構的情況下重定義算法中的某些步驟。 使用場景 算法骨架固定&#xff1a;如果一個算法的基本結構已經固定&#…

跨專業考研難度大嗎?聽聽過來人的真實經歷

在考研的大潮中&#xff0c;跨專業考研成為了一個不可忽視的現象。許多考生因為對原專業失去興趣、追求職業夢想或其他原因&#xff0c;選擇了跨專業報考。那么&#xff0c;跨專業考研的難度究竟有多大呢&#xff1f;今天&#xff0c;我們就來聊聊這個話題&#xff0c;聽聽過來…