⚡每日算法&面试题⚡一起肥学9️⃣

Java 同时被 2 个专栏收录
22 篇文章 7 订阅

⚽题外话

昨天有小伙伴找我,问有很多题不会怎么办?了解完之后发现是数据结构这块还不太了解,很多知识不知道怎么建链表和栈都不太了解。我建议还是从数据结构看看把这块补上来我们再慢慢来刷题,至于怎么补如果小伙伴没有好的计划也可以来私聊我,我给大家找找资源。

在这里插入图片描述

🌟算法题

给定一个可包含重复数字的序列 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语句,执行后会自动提交。

资料获取

©️2021 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值