目錄
- ?題外話
- 🌟演算法題
- 🌟一點點思路
- 🌟原始碼和詳解
- 🌟面試題
- 資料獲取
?題外話
昨天有小伙伴找我,問有很多題不會怎么辦?了解完之后發現是資料結構這塊還不太了解,很多知識不知道怎么建鏈表和堆疊都不太了解,我建議還是從資料結構看看把這塊補上來我們再慢慢來刷題,至于怎么補如果小伙伴沒有好的計劃也可以來私聊我,我給大家找找資源,

🌟演算法題
給定一個可包含重復數字的序列 nums ,按任意順序 回傳所有不重復的全排列,
示例 1:
輸入:nums = [1,1,2]
輸出:
[[1,1,2],
[1,2,1],
[2,1,1]]
示例 2:
輸入:nums = [1,2,3]
輸出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
提示:
1 <= nums.length <= 8
-10 <= nums[i] <= 10
🌟一點點思路
跟著我做題的小伙伴可能會發現了,今天的題只是昨天題的加強版,不熟悉思路的大佬可以看看肥肥的上一篇,這次我們依舊采用上次的方法,
🌟原始碼和詳解
本題和昨天的相比最主要的就是解決重復的問題保證在填第 \textit{idx}idx 個數的時候重復數字只會被填入一次即可,大家可以參照昨天的文章來看看,
class Solution {
boolean[] arr;
public List<List<Integer>> permuteUnique(int[] nums) {
List<List<Integer>> ans = new ArrayList<List<Integer>>();
List<Integer> perm = new ArrayList<Integer>();
arr = new boolean[nums.length];
Arrays.sort(nums);
backtrack(nums, ans, 0, perm);
return ans;
}
public void backtrack(int[] nums, List<List<Integer>> ans, int idx, List<Integer> perm) {
if (idx == nums.length) {
ans.add(new ArrayList<Integer>(perm));
return;
}
for (int i = 0; i < nums.length; ++i) {
if (arr[i] || (i > 0 && nums[i] == nums[i - 1] && !arr[i - 1])) {
continue;
}
perm.add(nums[i]);
arr[i] = true;
backtrack(nums, ans, idx + 1, perm);
arr[i] = false;
perm.remove(idx);
}
}
}
🌟面試題
MySQL中drop,delete與truncate的區別
相同點:
truncate和不帶where子句的delete,以及drop都會洗掉表內的資料
不同點:
truncate會清除表資料并重置id從1開始,delete就只洗掉記錄,drop可以用來洗掉表或資料庫并且將表所占用的空間全部釋放
truncate和delete只洗掉資料不洗掉表的結構,drop陳述句將洗掉表的結構被依賴的約(constrain),觸發器(trigger),依賴于該表的存盤程序/函式將保留,但是變為
invalid 狀態, 速度上一般來說: drop> truncate > delete 使用上,想洗掉部分資料行用
delete,想洗掉表用
drop,想保留表而將所有資料洗掉,如果和事務無關,用truncate即可,如果和事務有關,或者想觸發trigger,還是用delete,
delete是DML陳述句,不會自動提交,drop/truncate都是DDL陳述句,執行后會自動提交,
資料獲取
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/303302.html
標籤:java
上一篇:Java 常用類
