算法题
文章平均质量分 65
hf : )
就当做学习笔记吧
展开
-
算法题 判断链表是否有环,求环的入口点及环长
a为环入口点到头结点的路程,x为相遇点到环入口点的路程。我们假设slow指针走过的路程为s,那么fast指针走过的路程则为2s,假设环长为c。且有2s = s + ncs = a + x有上述式子,我们可以得到a + x = nca = nc – xa = (n – 1)c + c -x如果在头结点位置和相遇点位置分别再派出两名跑步选手,并且他们都每次只跑一步,好像会在环的入口点相遇啊!https...转载 2018-05-04 10:27:58 · 254 阅读 · 0 评论 -
算法题 KMP模式匹配算法
public class KMP { public static void main(String[] args){ String T = "icocococola"; String P = "cococola"; int[] next = Next(P); for(int i=0; i<next.length; i++) System.out.print(next...原创 2019-03-07 13:02:46 · 283 阅读 · 0 评论 -
算法题 链表倒置
public class ReverseList { public static void main(String[] args) { ListNode head = new ListNode(0); head.next = new ListNode(1); head.next.next = new ListNode(2); head.next.next.next = new ...原创 2019-03-07 13:32:56 · 367 阅读 · 0 评论 -
算法 BitMap算法详解
所谓的BitMap就是用一个bit位来标记某个元素所对应的value,而key即是该元素,由于BitMap使用了bit位来存储数据,因此可以大大节省存储空间。基本思想: 这此我用一个简单的例子来详细介绍BitMap算法的原理。假设我们要对0-7内的5个元素(4,7,2,5,3)进行排序(这里假设元素没有重复)。我们可以使用BitMap算法达到排序目的。要表示8个数,我们需要8个byte。...转载 2019-03-10 15:09:49 · 217 阅读 · 0 评论 -
算法题 N根绳子截M段问题
2019春招 字节跳动笔试题 第4题题目给n根绳子,分别记其长度为L1-Ln。现要从这些绳子中截出等长的m段,求这些绳子长度的最大值。比如3根绳子长度 1,3,4,截成3段,则最大值为2(1不截,3截一段,4截2段)看了下网上大佬的思路,感觉没什么问题,写下来记录一下。(可能有误,毕竟没提交试试能否AC)https://blog.csdn.net/coc0nut/article/...转载 2019-04-06 14:49:23 · 2177 阅读 · 1 评论 -
算法题 漂亮数组
LeetCode 932对于某些固定的N,如果数组A是整数1, 2, ..., N组成的排列,使得:对于每个i < j,都不存在k满足i < k < j使得A[k] * 2 = A[i] + A[j]。那么数组A是漂亮数组。给定N,返回任意漂亮数组A(保证存在一个)。示例 1:输入:4输出:[2,1,4,3]...转载 2019-04-11 15:58:39 · 924 阅读 · 1 评论 -
算法题 编辑距离
2019春招 拼多多笔试 第4题LeetCode 72 原题参考:https://blog.csdn.net/lwgkzl/article/details/81235421https://blog.csdn.net/sinat_35261315/article/details/78678961题目:给定两个单词word1和word2,计算出将word1转换成wo...转载 2019-04-08 13:06:47 · 225 阅读 · 1 评论 -
算法题 飞地的数量
LeetCode 1020题目描述:给出一个二维数组A,每个单元格为 0(代表海)或 1(代表陆地)。移动是指在陆地上从一个地方走到另一个地方(朝四个方向之一)或离开网格的边界。返回网格中无法在任意次数的移动中离开网格边界的陆地单元格的数量。示例 1:输入:[[0,0,0,0],[1,0,1,0],[0,1,1,0],[0,0,0,0]]输出:3解释: 有三...转载 2019-04-12 14:07:59 · 312 阅读 · 0 评论 -
算法题 搜索二维矩阵 II
Lintcode 38. 搜索二维矩阵 II编写一个高效的算法来搜索mxn矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:每行的元素从左到右升序排列。 每列的元素从上到下升序排列。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, ...转载 2019-04-12 15:17:37 · 237 阅读 · 0 评论 -
算法题 递增的三元子序列
LeetCode 334给定一个未排序的数组,判断这个数组中是否存在长度为 3 的递增子序列。数学表达式如下:如果存在这样的i, j, k,且满足0 ≤i<j<k≤n-1,使得arr[i]<arr[j]<arr[k],返回 true ;否则返回 false 。说明:要求算法的时间复杂度为 O(n),空间复杂度为 O(1...转载 2019-04-12 15:43:29 · 186 阅读 · 0 评论 -
算法题 单链表O(1)时间删除给定节点
今天听说能用O(1)删除链表节点,惊了,赶紧查了下怎么回事。http://www.cnblogs.com/bakari/p/4013812.html题目是这样的:给定头节点和目标节点,删除目标节点。public void deleteInO1(Node head,Node t){ //TODO}以往我们都是遍历一遍链表找到目标节点的前驱节点,然后指来指去解决。今天,学了一招叫做“狸猫换太...原创 2018-05-16 19:29:40 · 1875 阅读 · 0 评论 -
算法题 两/三/K数之和为Sum+不定项和为Sum
两数之和给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]思路:第一种方法是拿Map存储值和下标,然后遍历数组,用containskey函数判断是否存在tar...原创 2018-05-11 11:15:36 · 675 阅读 · 0 评论 -
算法题 只出现一次的数字Ⅰ/Ⅱ/Ⅲ
136. 只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。思路:本来使用HashMap做,后来才知道这是位运算方面的题,惭愧。 由于其他元素都出现了两次,因此把全部元素亦或一下,结果就出来了。。class Solution { public static int singleNumber(int[] ...原创 2018-05-11 18:27:04 · 8357 阅读 · 5 评论 -
算法题 硬币组合问题
原文:http://www.cnblogs.com/python27/archive/2013/09/05/3303721.html问题描述 假设我们有8种不同面值的硬币{1,2,5,10,20,50,100,200},用这些硬币组合够成一个给定的数值n。例如n=200,那么一种可能的组合方式为 200 = 3 * 1 + 1*2 + 1*5 + 2*20 + 1 * 50 + 1 * 100....转载 2018-05-20 13:56:25 · 8783 阅读 · 0 评论 -
算法题 螺旋矩阵Ⅰ/Ⅱ
题目描述:输入一个整数N,螺旋输出N*N矩阵例如:输入:4矩阵:1 2 3 45 6 7 89 10 11 1213 14 15 16输出:1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10思路:分层考虑,由外...原创 2018-05-20 14:43:38 · 434 阅读 · 0 评论 -
算法题 按层次换行打印二叉树
题目描述:将一颗二叉树按层次打印,打印一层换行思路:关键在于判断何时换行,这里采用的是一个last记录每层的最后一节点。代码:import java.util.LinkedList;import java.util.Queue;public class Tree { TreeNode last; TreeNode nlast; public void printTre...转载 2018-05-21 10:59:41 · 1211 阅读 · 0 评论 -
算法题 打印从左方向看到的二叉树
头条面试官问的一个问题,当时居然没写出来,难受。(树和队列练得少)题目描述:打印从左往右看到的二叉树(就是打印每层第一个节点)思路:按层换行打印改动一下,加个标记位解决。 按层换行打印:https://blog.csdn.net/qq_35546040/article/details/80389381代码:import java.util.LinkedLis...原创 2018-05-21 11:19:10 · 4756 阅读 · 1 评论 -
算法题 最长无重复字符子串
Leetcode 上的一道题无重复字符的最长子串给定一个字符串,找出不含有重复字符的最长子串的长度。示例:给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3。给定 "bbbbb" ,最长的子串就是 "b" ,长度是1。给定 "pwwkew" ,最长子串是 "wke" ,长度是3。请注意答案必须是一个子串,"pwke" 是 子序列 而不原创 2018-05-21 13:52:41 · 215 阅读 · 0 评论 -
算法题 快排实现(好记)
快排是一种很重要的排序,没事敲几遍复习一下,不然忘了。public class QuickSort { public static void main(String[] args) { int[] a = {5,3,6,7}; quickSort(a,0,a.length-1); for(int i=0;i<a.length;i++) System.out...原创 2018-05-22 19:39:43 · 724 阅读 · 0 评论 -
算法题 求第K大的数
题目描述:在乱序数组中求第K大的数思路:立刻想到的是当然先排序然后取数。但是提问者明显不是想这么解。上网查了下原来是快排思路。利用快排的思想,从数组arr中随机找出一个元素X,把数组分成两部分arr_a和arr_b。arr_a中的元素比x大,arr_b中的元素比x小。这个时候分为两种情况:1.arr_a中的元素个数小于K,则第K大数在arr_b中2.arr_a中的元素大于...原创 2018-05-22 20:22:09 · 1729 阅读 · 0 评论 -
笔试题 非递减序列和HASH表最大桶深
2019.04.16 360企业安全笔试题没什么难度,贴下问题记录下来非递减序列时间限制:C/C++语言 1000MS;其他语言 3000MS内存限制:C/C++语言 65536KB;其他语言 589824KB题目描述:给出一个有n(0 < n <= 10000)个整数的数组A(-10000 <= Ai <=10000) , 请问是否可以至多修改一个元素,...原创 2019-04-17 14:34:06 · 809 阅读 · 0 评论