描述
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
说明
- 必须在原数组上操作,不能拷贝额外的数组。
- 尽量减少操作次数。
解题思路
双指针把非0元素前移,然后末尾添0。
独立思考,以行践言
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
双指针把非0元素前移,然后末尾添0。
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
最开始打算转换成数字类型,然后进行加法运算后再转换成数组。但后来考虑到数组长度范围为0-100,可能导致溢出,便直接对数组进行操作,只需要考虑进位即可。
给定两个数组,编写一个函数来计算它们的交集。
输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。
我们可以不考虑输出结果的顺序。
如果给定的数组已经排好序呢?你将如何优化你的算法?
如果 nums1 的大小比 nums2 小很多,哪种方法更优?
如果 nums2 的元素存储在磁盘上,内存是有限的,并且你不能一次加载所有的元素到内存中,你该怎么办?
和前几天做的题目很类似,想到了两种办法,一个是利用hash表进行统计,另一个就是对两个数组进行排序,然后通过遍历的方式进行统计。
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
该问题首先想到的方法应该是先对数组排序,然后消去包含重复的值。其次就是使用哈希表,根据add函数的返回值对set内的元素进行增删,由于只有一个元素是出现一次,其他元素均出现两次,最后hash表中只会包含一个元素--目标元素。
给定一个整数数组,判断是否存在重复元素。
如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。
该问题首先想到的方法应该是先对数组排序,然后在判断是否包含重复的值。但该问题的标签中包含哈希表,提醒我可以用hashset给数组去重,然后根据hashset的长度以及原始数组的长度判断是否存在重复的元素。