算法
文章平均质量分 88
Shawn_Chan
这个作者很懒,什么都没留下…
展开
-
有关素数的部分问题的分析与整理
定义:一个大于1的,除了1和它本身外,不能被其他自然数整除的整数,称为质数(prime number)又称素数。合数,指自然数中除了能被1和本身整除外,还能被其他数(0除外)整除的数。与之相对的是质数,而1既不属于质数也不属于合数。问题一:判断单个数n是否为素数。思路:如果该数大于或等于2,则遍历2到根号n区间的所有整数a,将n对a取余,如果余数全部不为0则n为质数。将上句话中的“整数a”改为“2...原创 2018-04-17 22:39:20 · 637 阅读 · 0 评论 -
部分笔试算法题整理
1、最大字典子序列给一个字符串,从里面选取子序列,求新组成的最大字典序列。如“ABCAB”,最大字典子序为“CB”。(2018春-爱奇艺) 思路一:先遍历一遍,找到最大的字符C,第二趟从C右边开始遍历,找到最大的字符B,再从B右边开始遍历,右边没有了,结束。时间复杂度为O(n2)O(n2)O(n^2)思路二:单调栈,时间复杂度为O(n)O(n)O(n)import java.util...原创 2018-08-13 21:05:09 · 521 阅读 · 0 评论 -
剑指offer算法题分析与整理(五)
1、圆圈中最后剩下的数字(约瑟夫环)n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。当一个数字删除后,从被删除数字的下一个继续删除第m个数字。求出在这个圆圈中剩下的最后一个数字。 思路一:用数组模拟环public class Solution { public int LastRe...原创 2018-08-07 22:39:30 · 517 阅读 · 0 评论 -
剑指offer算法题分析与整理(四)
1、合并两个排序的链表输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 思路一:非递归/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/pub...原创 2018-08-06 22:48:39 · 320 阅读 · 0 评论 -
剑指offer算法题分析与整理(三)
1、找出二叉搜索树中的第k小的结点思路一:中序遍历,栈/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/...原创 2018-07-31 22:42:43 · 363 阅读 · 0 评论 -
剑指offer算法题分析与整理(二)
1、序列化二叉树请实现两个函数,分别用来序列化和反序列化二叉树。 思路一:用一定的规律遍历二叉树例如前序、中序、后序遍历,在遍历过程中将节点的值记录下来,关键是要将每个节点的两个子节点用空点补完整, 在遍历过程中遇到空点也要记录下来,这样再恢复的时候才能还原二叉树的形状。/*class TreeNode { int val = 0; TreeNode left = nu...原创 2018-07-25 22:50:50 · 347 阅读 · 0 评论 -
剑指offer算法题分析与整理(一)
1、数组中的逆序对链接: 来源:牛客网在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 思路:很明显,暴力解答时间复杂度为O(n^2),不可取。一种很巧妙的方法是,利用归并排序,在两段相互比较排序的过程中,统计逆序对。publ...原创 2018-07-12 20:11:19 · 2402 阅读 · 0 评论 -
跳跃游戏 Jump Game 分析与整理
参考文章 点这儿查看 给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以向后跳跃的最大长度。问题一判断你能不能到达数组的最后一个位置。 思路:从数组的第一个位置开始,往后一格一格遍历数组,当所遍历的位置还没超出可reach范围时,根据跳力更新可reach范围,可遍历的范围必须小于等于reach值。若可reach范围可覆盖数组最后一个位置,则可到达;...原创 2018-07-11 17:57:22 · 7427 阅读 · 0 评论