algorithm
augfun
旧博客遗失,新博客凑活着用吧
展开
-
HIGH高频H3(21-31)
HIGH21、整数反转给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[−231,231− 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems...转载 2020-12-16 01:30:57 · 191 阅读 · 0 评论 -
HIGH高频H2(11-20)
HIGH.11 合并两个排序的链表输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4限制:0 <= 链表长度 <= 1000来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof转载 2020-12-16 01:01:06 · 187 阅读 · 0 评论 -
HIGH高频H1(1-10)
HIGH.1无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: s = "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"wke",所以其长度为 3。 请注...原创 2020-12-15 01:50:04 · 388 阅读 · 0 评论 -
Leetcode面T17(21-30)树
Q17.21 直方图的水量给定一个直方图(也称柱状图),假设有人从上面源源不断地倒水,最后直方图能存多少水量?直方图的宽度为 1。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的直方图,在这种情况下,可以接 6 个单位的水(蓝色部分表示水)。感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/volu.转载 2020-12-08 00:48:54 · 161 阅读 · 0 评论 -
Leetcode面T17(11-20)树
Q17.11 单词距离有个内含单词的超大文本文件,给定任意两个单词,找出在这个文件中这两个单词的最短距离(相隔单词数)。如果寻找过程在这个文件中会重复多次,而每次寻找的单词不同,你能对此优化吗?示例:输入:words = ["I","am","a","student","from","a","university","in","a","city"], word1 = "a", word2 = "student"输出:1提示:words.length <= 100000来源:力转载 2020-12-08 00:33:42 · 953 阅读 · 0 评论 -
Leetcode面T17(1-10)树
Q17.1 树不用加号的加法设计一个函数把两个数字相加。不得使用 + 或者其他算术运算符。示例:输入: a = 1, b = 1输出: 2提示:a,b均可能是负数或 0结果不会溢出 32 位整数来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/add-without-plus-lcci著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。class Solution { public ...转载 2020-12-07 00:22:00 · 139 阅读 · 0 评论 -
Leetcode面T16(20-26)树
Q16.21 交换和给定两个整数数组,请交换一对数值(每个数组中取一个数值),使得两个数组所有元素的和相等。返回一个数组,第一个元素是第一个数组中要交换的元素,第二个元素是第二个数组中要交换的元素。若有多个答案,返回任意一个均可。若无满足条件的数值,返回空数组。示例:输入: array1 = [4, 1, 2, 1, 1, 2], array2 = [3, 6, 3, 3]输出: [1, 3]示例:输入: array1 = [1, 2, 3], array2 = [4, 5, 6.转载 2020-12-07 00:04:12 · 307 阅读 · 0 评论 -
Leetcode面T16(11-20)树
Q16.11 跳水板你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。返回的长度需要从小到大排列。示例 1输入:shorter = 1longer = 2k = 3输出: [3,4,5,6]解释:可以使用 3 次 shorter,得到结果 3;使用 2 次 shorter 和 1 次 longer,得到结果 4 。以此类推,得到最终结果。.转载 2020-12-06 23:26:41 · 194 阅读 · 0 评论 -
Leetcode面T16(1-9)树
Q16.1交换数字编写一个函数,不用临时变量,直接交换numbers = [a, b]中a与b的值。示例:输入: numbers = [1,2]输出: [2,1]提示:numbers.length == 2来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/swap-numbers-lcci著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。class Solution { public int.转载 2020-12-06 14:08:19 · 124 阅读 · 0 评论 -
Leetcode面T10(1-9)数组
Q10.1合并排序的数组给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法,将 B 合并入 A 并排序。初始化A 和 B 的元素数量分别为m 和 n。示例:输入:A = [1,2,3,0,0,0], m = 3B = [2,5,6], n = 3输出:[1,2,2,3,5,6]说明:A.length == n + m来源:力扣(LeetCode)链接:https://leetcode-cn.com/proble...转载 2020-12-06 13:07:38 · 147 阅读 · 0 评论 -
Leetcode面T8(1-9)树
Q8.1 三步问题三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模1000000007。示例1:输入:n = 3输出:4说明: 有四种走法示例2:输入:n = 5输出:13提示:n范围在[1, 1000000]之间来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/three-steps-problem-l...转载 2020-12-06 02:00:06 · 181 阅读 · 0 评论 -
Leetcode面T5(1-9)树
Q5.1 插入插入。给定两个32位的整数N与M,以及表示比特位置的i与j。编写一种方法,将M插入N,使得M从N的第j位开始,到第i位结束。假定从j位到i位足以容纳M,也即若M = 10 011,那么j和i之间至少可容纳5个位。例如,不可能出现j = 3和i = 2的情况,因为第3位和第2位之间放不下M。示例1:输入:N = 1024(10000000000), M = 19(10011), i = 2, j = 6输出:N = 1100(10001001100)示例2:输入: N...转载 2020-12-06 01:19:49 · 162 阅读 · 0 评论 -
Leetcode面T4(1-9)树
Q4.1 节点间通路节点间通路。给定有向图,设计一个算法,找出两个节点之间是否存在一条路径。示例1:输入:n = 3, graph = [[0, 1], [0, 2], [1, 2], [1, 2]], start = 0, target = 2输出:true示例2:输入:n = 5, graph = [[0, 1], [0, 2], [0, 4], [0, 4], [0, 1], [1, 3], [1, 4], [1, 3], [2, 3], [3, 4]], start = 0,转载 2020-12-04 01:47:36 · 162 阅读 · 0 评论 -
Leetcode面T3(1-5)栈
Q3.1 栈的最小值请设计一个栈,除了常规栈支持的pop与push函数以外,还支持min函数,该函数返回栈元素中的最小值。执行push、pop和min操作的时间复杂度必须为O(1)。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.getMin(); --> 返回 -3.minStack.pop();minStack.top();转载 2020-12-04 00:58:50 · 382 阅读 · 0 评论 -
Leetcode面T2(1-8)链表
Q2.1 判定字符是否唯一编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。示例1:输入:[1, 2, 3, 3, 2, 1]输出:[1, 2, 3]示例2:输入:[1, 1, 1, 1, 2]输出:[1, 2]链表节点定义public class ListNode { //节点存储的数据 int val; //节点的后继节点 ListNode next; //构造方法,生成一个节点时要存入一个数据 ...原创 2020-12-03 01:26:47 · 181 阅读 · 0 评论 -
Leetcode面T1(1-9)字符
Q1.1 判定字符是否唯一实现一个算法,确定一个字符串 s 的所有字符是否全都不同。示例 1:输入: s = “leetcode”输出: false示例 2:输入: s = “abc”输出: true限制:0 <= len(s) <= 100如果你不使用额外的数据结构,会很加分。方法一、双循环牺牲时间不使用额外的数据结构,所以计数的方法不能用。这种情况来说,容易想到的就是牺牲时间换空间,第一种方法就是用双循环来代替额外的数据结构。内外循环都遍历整个字符串原创 2020-12-03 00:54:39 · 298 阅读 · 0 评论 -
LinkedHashMap源码分析
LinkedHashMap是HashMap的子类,与HashMap有着同样的存储结构,但它加入了一个双向链表的头结点,将所有put到LinkedHashmap的节点一一串成了一个双向循环链表,因此它保留了节点插入的顺序,可以使节点的输出顺序与输入顺序相同。LinkedHashMap可以用来实现LRU算法(这会在下面的源码中进行分析)。LinkedHashMap同样是非线程安全的,只在单线程...原创 2018-09-16 06:21:23 · 263 阅读 · 0 评论 -
Java中ArrayList和LinkedList区别
ArrayList和LinkedList的大致区别如下:1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。总结A...原创 2020-04-06 19:15:38 · 468 阅读 · 0 评论 -
折半查找
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以...原创 2018-09-15 21:22:01 · 393 阅读 · 0 评论 -
顺序查找
伪代码如下public class Solution { public static int SequenceSearch(int[] sz, int key) { for (int i = 0; i < sz.length; i++) { if (sz[i] == key) { return i; } } return -1; }}...原创 2018-09-15 21:11:44 · 1316 阅读 · 0 评论 -
java实现四种常用排序算法
四种常用排序算法(从小到大排)简单排序:冒泡排序、选择排序、插入排序高级排序:快速排序、归并排序、希尔排序冒泡排序特点:效率低,实现简单思想:每一趟将待排序序列中最大元素移到最后,剩下的为新的待排序序列,重复上述步骤直到排完所有元素。这只是冒泡排序的一种,当然也可以从后往前排。(1)原理: 1、从第一个数据开始,与第二个数据相比较,如果第二个数据小于第一个数据,则...原创 2018-09-02 04:52:38 · 529 阅读 · 0 评论 -
经典算法题
1.二分查询(非递归方式)/** * @desc 二分查询(非递归方式) * 案例: * {1,3,8,10,11,67,100},编程实现二分查找,要求使用非递归方式完成。 * @Author xw * @Date 2019/9/27 */public class BinarySearchNonRecursive { public static void main(String[] args) { int[] arr = {1, 3, 8, 10, 11, 67转载 2020-09-14 23:59:03 · 255 阅读 · 0 评论 -
Java经典算法50题(01-10)
【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?package suanfa50;/** * 斐波那契数列 * 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子, * 假如兔子都不死,问每个月的兔子总数为多少? * @author ASUS * */public class test01 { public sta...原创 2020-11-20 00:12:56 · 133 阅读 · 0 评论 -
100盏灯的问题
房间里有100盏电灯,编号为1,2,3……100,每盏灯上有一个按钮,初始时灯全都是关的。编好号的100位同学由房间外依次走进去,将自己编号的倍数的灯的按钮全部按一次,例如第一位同学把编号是1的倍数的灯的按钮按一下(此时100盏灯全亮),第二位同学把编号是2的倍数的灯的按钮按一下(此时只有50盏灯亮着,50盏被这个人按灭了)……第100位同学把编号是100的倍数的灯(即编号为100的灯)的按钮按一下,请问依次走完后,还有多少盏灯亮着?方法一:常见的实现方法:package com.ldw.test原创 2020-11-20 00:12:29 · 616 阅读 · 0 评论 -
字符串大小写的转换并倒序输出
package com.ldw.test;public class daoxu { public static void main(String[] args) { String str= "This is Hello"; char[] ch = str.toCharArray(); StringBuffer buffer = new StringBuffer(); for (int i=str.length()-1; i>=0; i--) { if (ch[i] ...原创 2020-11-20 00:12:14 · 1584 阅读 · 0 评论