LeetCode初级算法之数组:1.两数之和
两数之和题目地址:https://leetcode-cn.com/problems/two-sum/
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
示例:
123输入:nums = [2, 7, 11, 15], target = 9输出:[0, 1]因为 nums[0] + nums[1] = 2 + 7 = 9
暴力枚举这里想必大家很快就能得到思路也就是双指针遍历所有两两相加判断是否与目标值相等
123456789101112public int[] twoSum(int[] nums, int target) { int n = nums.length; for (int i = 0; i < n; ++i) { for (int j = i + 1; j < n; ++j) { if (nums[i] + nums[j] == ta ...
夏天的风
《夏天的风》谱子收藏、全文查看
您的浏览器不支持视频标签
彩虹
《彩虹》谱子收藏、全文查看
您的浏览器不支持视频标签
我喜欢上你时的内心活动
《我喜欢上你时的内心活动》谱子收藏、全文查看
您的浏览器不支持视频标签
夜夜夜夜
《夜夜夜夜》谱子收藏、全文查看
您的浏览器不支持视频标签
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 ...