![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
iversongzy
一个在山脚下准备爬山的人
展开
-
Array-三数之和
题目:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]解题思路:首先要给数组进行从小到大排序,然后从左往右依次遍历。固定左边值,因为题目要求是要找到和为0的数组,如果和为0,其中的元素要么有负数,要么都是0,如果都是整数不可原创 2021-03-09 00:53:39 · 83 阅读 · 0 评论 -
Array-爬楼梯
问题:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶解题思路:此题使用递归的思路最好求解。这个题其实可以在纸上写出前几种情况的解法,找到他们的相同之处,找到最小重复子问题。假设我们已经知道n-1和n-2有多少种走法,也知道每次你可以爬 1 或 2 个台阶,所以n阶台阶的走法就是原创 2021-03-09 00:52:07 · 85 阅读 · 0 评论 -
Array-移动零
题目:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]解题思路任何一道题在解题时首先要考虑它的边界条件。定义变量index记录不为0元素的位置,同时使用for循环遍历,将不为0的值放在前面去,重点在11行,把0换到后面去。27行的做法更为巧妙,当i > j 时,只需要把 i 的值赋值给j 并把原位置的值置0。同时这里也把交换操作换成了赋值操作。class Sol原创 2021-03-09 00:50:29 · 135 阅读 · 0 评论 -
Array-盛最多水的容器
盛最多水的容器题目:给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。输入:[1,8,6,2,5,4,8,3,7]输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。解题思路1、首先要想.原创 2021-03-09 00:47:28 · 75 阅读 · 0 评论 -
字符串全排列
字符串全排列是一道常见的算法题,例如字符串"abc"的全排列是"abc"、"acb"、"bac"、"bca"、"cab"、"cba",这种问题通常使用递归的思想求解。解题思路:首先固定一个字符,对后面的字符进行全排列,以此类推,直到遇到基准情况(仅剩一个字符时)返回调用。以上边的字符串abc为例,首先固定a,对bc进行全排列;之后使a与b交换相当于固定b,对ac进行全排原创 2018-04-21 15:30:35 · 894 阅读 · 0 评论 -
每天一道算法题——链表反转
这是我第一次实习面试的时候被问到的算法题,现在想想当时还是很年轻啊。链表是数据结构的基础而且变化多端,可以考察的点非常的多,单链表反转应该是在面试中出现次数比较多的一道题了,我觉得它是在考一个人的基础,也考察的思维灵敏度。例如给定1 -> 2 -> 3 -> 4 -> 5,转换成5 -> 4 ->3 -> 2 -> 1。比较巧妙的一种方法就是递归判断,假设已经递归到最后一步1 -> 2原创 2017-11-02 00:07:45 · 351 阅读 · 0 评论 -
每天一道算法题——字符串匹配
字符串匹配算法是我在映客面试时候的一道算法题,当时用的还是最基本的暴力枚举法写出来的吧,之前看过的KMP算法,Rabin-Karp算法都没用上,今天就来总结一下字符串匹配的几种算法吧。一、暴力匹配法:这应该是万能算法了,但性能比较差,它的过程就是在[0,n-m]范围内,查找是否存在一个s,0代码如下:package p_14_matchstr;public clas原创 2017-11-01 16:50:13 · 685 阅读 · 0 评论 -
每天一道算法题——用栈实现队列
这道题也是我面试HoloMatic中的一道题,但是这道题答的也不是很好,今天就来总结这道题所用的算法吧。首先,用两个栈实现队列:由于之前对数据结构和算法不是很了解,只是知道栈是LIFO,队列是FIFO,当被问到的时候思考了半天,想出来一个不是很巧妙的算法:设置两个栈分别为stack1,stack2,入队操作我想的就是将数据压入到stack1中,而出队操作就是将pop出stack1中所有元素原创 2017-10-31 10:28:51 · 469 阅读 · 0 评论 -
每天一道算法题——二进制数中1的个数
这是我在面试HoloMatic时考官问我的一道算法题,但是当时我没有好的想法,只是用最基本的方法写出来的,现在整理一下这道题的思路:1、不完善版:(问题一:如果把右移换成/2可以吗:不可以,因为除法的效率比移位运算的效率低; 问题二:如果输入的负数会出现什么情况:因为是右移,负数会高位补1,最后陷入死循环)public int Method1(int binary){ int coun原创 2017-10-30 02:24:36 · 323 阅读 · 0 评论 -
每天一道算法题——数组重排序
算法:按照规则重排数组原创 2017-10-27 23:35:35 · 274 阅读 · 0 评论 -
每天一道算法题——汉诺塔
汉诺塔如图所示,把圆盘从下面开始按大小顺序重新摆放在另一根柱子上,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。它的解法可以采用分解法,把一个大的问题,逐步分解成一个个小问题。比如我们想把A中的盘子挪到B上,可以把问题分解成,将A的前n-1个盘子先挪到C,然后把A中最后一个挪到B,再把C的n-1个盘子挪到B;然后n-1个盘子的问题可以分解成,先将C中前n-2个盘子放到A,把C的最原创 2017-10-29 10:51:01 · 1467 阅读 · 1 评论 -
JAVA局部内部类的使用
我是在JDK8环境下实现的,与之前的版本规则有一些变化,所以在这里mark一下public class localInnerClass{ public static void main(String []args){ OutClass out = new OutClass(); out.show(); }}class OutClass{原创 2017-04-22 00:00:11 · 3341 阅读 · 0 评论 -
三种基本的排序程序(多态)
这个程序主要是为了熟悉冒泡,选择,插入三种排序方法。还可以理解静态方法的使用,和一种比较简洁的二值交换程序。import java.util.Scanner;import java.util.Arrays;public class manySort{public static void main(String []args){ Scanner input = new Scanne原创 2017-03-27 16:20:08 · 541 阅读 · 0 评论 -
Java中多态的使用
这个小程序重点在于对School的设计,用到了重写,继承,多态等public class PolyDemo{ public static void main(String [] args){ colorPrinter cp = new colorPrinter("lenovo"); blackPrinter bp = new blackPrinter("原创 2017-04-11 08:56:57 · 595 阅读 · 0 评论