题目
怎么取名啊
这个人很勤奋 什么都留下了
展开
-
LeetCode.350:两个数组的交集II
题目 思路 对于两个数组的交集,其实就是寻找两个数组的相同元素,所以可以使用双指针。将两个数组分别进行排序,然后定义指针i和j,分别指向nums1和nums2的第0个位置。当i所指向的位置元素大于j指向的位置时,i不动,j+1;反之j不动,i+1。当i和j指向的位置元素相等时,证明此数字是两个数组的交集之一,则将它添加进用于存放结果的动态数组。因为两个数组是经过排序的,所以若i和j其中有一个的值大于数组的长度,则退出循环,表示无交集。 代码 public int[] intersect(int[] nu原创 2021-08-01 21:29:46 · 57 阅读 · 0 评论 -
LeetCode.11:盛最多水的容器
题目 思路 定义一个left指针和一个right指针,分别指向数组的第0个元素和最后一个元素,此时right - left就是容器的长。 此时我们有了容器的长,如果想让容器的面积更大,则选取的高应该也要尽量更大。left和right指针指向的数组元素就是容器的高。如果left指向的数组元素小于right指向的数组元素,则代表此时right当作容器的高所求出来的面积比left当作容器的高所求出的面积大,则保留right,将left + 1,反之则right - 1。即每次循环都比较left和right的大小原创 2021-07-29 21:50:27 · 61 阅读 · 0 评论 -
算法:全排列
全排列 编写一个函数求解某字符串中所有字符的排列(不包括重复)。 例如字符串“ABC”,它的全排列有: ABC ACB BAC BCA CAB CBA 思路 全排列实际上只需要以下步骤: 选择“老大”,即将字符串中的其中一个字符移至字符串最前面,当作此字符串的“老大”。 在除了“老大”字符之外的字串中再选择一个“老大”。 重复上述步骤,直到字串只有一个字符时,返回上一层,将“老大”更换成没有当过“老大”的字符。如子串中的字符都当过“老大”,则继续返回上一层。 过程 现在用图片进行举例,使用例子为字原创 2021-07-23 21:09:13 · 87 阅读 · 0 评论 -
算法:棋盘覆盖问题
棋盘覆盖问题 在一个2的k次方乘2的k次方(k > 0)个方格组成的棋盘中,有一个特殊方格和其他的不同。棋盘覆盖问题要求使用4种不同形状的L型骨牌覆盖给定棋盘上除了特殊方格以外的所有方格,且任何L型骨牌不能重叠覆盖。 如下图,灰色为特殊方格,其他颜色的L型骨牌加上特殊方格正好可以铺满整个棋盘。 思路 假设我们要考虑4x4大小的棋盘,且因为此题所给棋盘为正方形、边长一定为偶数,所以可以使用分治法将4x4大小的棋盘划分为4个2x2大小的棋盘来进行处理。 此时,每个2x2大小的小棋盘都可以使用一个L型骨原创 2021-07-19 22:13:53 · 4267 阅读 · 0 评论 -
LeetCode.剑指Offer 03.数组中重复的数字
题目 解法一 因为题目只要求返回其中一个重复元素,所以可以直接使用一层循环来解决问题。在循环前,可以先将数组进行排列,排列后重复元素必然相邻,用下标和下标+1表示两个元素,进行比对,若相等,则为重复元素,可以直接跳出循环进行输出。如下图: 代码: class Solution { public int findRepeatNumber(int[] nums) { Arrays.sort(nums); //0 1 2 2 3 3 5 // i i+1原创 2021-07-12 20:09:15 · 44 阅读 · 0 评论 -
LeetCode.9:判断回文数
题目 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 例如“123321”是回文,而“1234”不是。 思路 建立循环,不停比较整数左右两边是否相等,如果不相等直接返回false,循环正常执行结束则返回true。 得到需要判断的数字时,把整数转换为字符串更加方便处理,循环中i的值对应字符串的左边第i个数字,字符串s的长度-1-i表示字符串从右起第i个数字。使用charAt(i)来获取位于第i个位置的字原创 2021-05-25 08:44:01 · 104 阅读 · 3 评论