LeetCode初级算法之数组:283.移动零
移动零题目地址:https://leetcode-cn.com/problems/move-zeroes/
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
12输入: [0,1,0,3,12]输出: [1,3,12,0,0]
说明:
必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。
题目信息输入:数组
输出:数组(将原数组的0都移动到后面)
额外:空间O(1),时间尽量减少
思考对于这样一道题一开始看到要原地修改首先就想到了双指针遍历一次把不是零的往前设置。后面的再全部设置0,这样得到的算法也是满足空间复杂度O(1),时间复杂度O(n).
12345678910111213public void moveZeroes(int[] nums) { int j = 0; for(int i=0;i<nums.length;i++){ if(nums[i] != 0){ nums[j]=nums[i]; j++ ...
面试五
面向对象怎么理解的?
面向对象三大特性说一下?
事物有哪些特性?
抽象类是什么?接口是什么?区别是什么?
对JVM了解多少?内存结构怎么划分的?
HashMap有了解不?四指针为什么解决了头插问题?
说一下redis缓存穿透?布隆过滤器是怎么实现的?
说一下Spring MVC的流程
说一下IOC、AOP
说一下Spring Boot
LeetCode初级算法之数组:66.加一
加一题目地址:https://leetcode-cn.com/problems/plus-one/
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
123输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。
示例 2:
123输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。
题目信息输入:整数数组(整体表示一个数字每一位就是0-9,个十百千…位)
输出:整数数组(给这个数字加一之后用数组表达对应数字)
思考一开始想到的就是模拟加法,在仔细读题目后又得到了另一种解决方式,就是还原成表达的数字加一之后再还原成数组。
12[1,2,3]1*100 + 2*10 + 3*1 = 123
12[4,3,2,1]4*1000 + 3*100 + 2*10 + 1*1 = 4321
123456789101112131415161718//方式一public int[] plus ...
LeetCode初级算法之数组:350.两个数组的交集 II
两个数组的交集 II题目地址:https://leetcode-cn.com/problems/intersection-of-two-arrays-ii/
给定两个数组,编写一个函数来计算它们的交集。
示例 1:
12输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2,2]
示例 2:
12输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[4,9]
说明:
输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。
我们可以不考虑输出结果的顺序。
进阶:
如果给定的数组已经排好序呢?你将如何优化你的算法?
如果 nums1 的大小比 nums2 小很多,哪种方法更优?
如果 nums2 的元素存储在磁盘上,内存是有限的,并且你不能一次加载所有的元素到内存中,你该怎么办?
题目信息输入:两个整数数组
输出:交集数组
额外:不考虑顺序
思考就相当于是数学集合求交集,很容易想到的就是双指针扫描比较判断是否存入结果。对于这样的方式就选择先排序再比较。
12345678nums1 = [4,5,9], ...
一万次悲伤
《一万次悲伤》谱子收藏、全文查看
您的浏览器不支持视频标签
春风十里
《春风十里》谱子收藏、全文查看
您的浏览器不支持视频标签
LeetCode初级算法之数组:136.只出现一次的元素
只出现一次的元素题目地址:https://leetcode-cn.com/problems/single-number/
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
示例 1:
12输入: [2,2,1]输出: 1
示例 2:
12输入: [4,1,2,1,2]输出: 4
题目信息输入:整数数组(只有一个数单个,其他数全部是两次的数组)
输出:整数(那个单个的数)
额外:时间复杂度O(n),空间复杂度O(1)
思考一开始看漏了信息以为只有数组里只有一个不重复其他都是重复不限次数,忽略了重复只有2次。所以想到的只有万能的map计数,无论是找出现次数最多的还是出现一次的啥都可以。但并不满足空间复杂度,为了满足空间复杂度不使用额外记录那就是暴力扫描n^2,说到扫描就还对应一个更优的方式就是排序后再扫描nlogn但这两种也都不满足线性的时间复杂度。(记得上一篇判断数组是否有重复也有这几种思路使用容器或者双指针扫描)
123456789101112131 ...
面试四
OSI参考模型
tcp/ip模型
操作系统死锁


