算法
doubicheng
这个作者很懒,什么都没留下…
展开
-
算法(四十八)
### 1、给你一个链表,每k个节点一组进行翻转,请你返回翻转后的链表。k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是k的整数倍,那么请将最后剩余的节点保持原有顺序。示例:给你这个链表:1->2->3->4->5当k= 2 时,应当返回: 2->1->4->3->5当k= 3 时,应当返回: 3->2->1->4->5### 参考代码一: public ListNode ...原创 2020-05-11 10:42:05 · 155 阅读 · 0 评论 -
算法(四十七)
1、**判断一个运算表达式的左右括号是否全部合法**public class test010 { private HashMap<Character, Character> mappings; public test010() { this.mappings = new HashMap<Character, Character>(); this.mappings.put(')', '('); this.mappings...原创 2020-05-11 10:40:54 · 803 阅读 · 0 评论 -
算法(四十六)
1、找出一个字符串中不同字符的种类个数。import java.util.HashSet;import java.util.Set;public class test009 { public static void main(String[] args) { String s = "abcde"; Set<Character> set = new HashSet<>(); for(int i=0; i<s.leng...原创 2020-05-11 10:39:07 · 184 阅读 · 0 评论 -
算法(四十五)
1、二叉树遍历(采用中序)**方法一***二叉树节点*public class Node { public Node left; public Node right; public int val; public Node(int data){ this.val = data; }}**递归**public static void inOrderRecursion(Node head){ if(head == null){...原创 2020-05-11 10:37:34 · 173 阅读 · 0 评论 -
算法(四十四)
1、求最大子数组和。输入一个整形数组,数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和,求所有子数组和的最大值。例:输入的数组为1,-2,3,10,-4,7,2,-5。和最大的子数组为3,10,-4,7,2。因此输出该子数组的和为18。代码如下:**方法一**(暴力法)public class test005 { public static void main(String[] args) { int[] a = new int[]{1,-2, 3,10, -4...原创 2020-05-11 10:34:53 · 150 阅读 · 0 评论 -
算法(四十三)
1、存储有[0,n)的数组,数组长度为len。只能交换数组里n和0的位置进行排序.输入 数组a为:{3,4,2,5,1,0,9,7,8,6}输出 数组a为:{0 1 2 3 4 5 6 7 8 9}public class test003 { public static void main(String[] args) { int[] a = new int[]{3,4,2,5,1,0,9,7,8,6}; sort(a, a.length); f...原创 2020-05-11 10:29:05 · 295 阅读 · 1 评论 -
算法(四十二)
1、给你一个包含数字的数组,返回所有可能组成ip的结果。如果没有返回false输入:数组a为[2,5,5,2,5,5,1,1,1,3,5]输出:[255.255.11.135, 255.255.111.35]import java.util.ArrayList;import java.util.List;public class test001 { public static void main (String[] args) { test035 ip = new te...原创 2020-05-11 10:20:25 · 194 阅读 · 0 评论 -
算法(四十一)
1、为了不断优化推荐效果,今日头条每天要存储和处理海量数据。假设有这样一种场景:我们对用户按照它们的注册时间先后来标号,对于一类文章,每个用户都有不同的喜好值,我们会想知道某一段时间内注册的用户(标号相连的一批用户)中,有多少用户对这类文章喜好值为k。因为一些特殊的原因,不会出现一个查询的用户区间完全覆盖另一个查询的用户区间(不存在L1<=L2<=R2<=R1)。输入描述:...原创 2020-04-05 17:22:19 · 231 阅读 · 0 评论 -
算法(四十)
1、实现一个算法,确定一个字符串s的所有字符是否全都不同。classSolution{publicbooleanisUnique(Stringastr){intlen=astr.length();for(inti=0;i<len;i++){for(intj=i+1;j<l...原创 2020-04-02 10:54:39 · 87 阅读 · 0 评论 -
java算法(三十九)
1、给定一个用数字表示的迷宫矩阵,其中-2是入口,-3是出口,-1是障碍物,0表示道路,>0的表示传送门,处于传送门的位置可以像道路一样从上下左右走,相比道路传送门可以一步就传送到另外一个传送门的位置。比如上面的例子:第一行的1可以直接跳到行末的1。输入:4 31 0 -1 1-2 0 -1 -32 2 0 0输出:3代码如下:package com.c...原创 2020-03-25 16:30:47 · 122 阅读 · 0 评论 -
算法(三十八)
1、用户模型文件去重。抖音上不同的用户类型我们有不同的用户模型文件。我们有一个模型配置文件,里面有很多的不同用户类型和他们对应的模型文件。我们需要找出每个模型文件对应的是哪些用户类型。给定一行输入,格式为:a ba表示这个用户的用户类型,b表示这个用户对应的模型文件。请你输出每个模型文件对应的用户类型。注意:每个模型文件可能对应多个用户类型,用户类型之间用空格作为切分。注意...原创 2020-03-24 17:35:25 · 235 阅读 · 0 评论 -
算法(三十七)
1、根据逆波兰表示法,求表达式的值。有效的运算符包括+,-,*,/。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例1:输入: ["2", "1", "+", "3", "*"]输出: 9解释: ((2 + 1) * 3) = 9示例...原创 2020-03-18 14:08:03 · 100 阅读 · 0 评论 -
算法(十四)
1、1->8->5->4->6->3->2 以某个节点为分隔。要求所有比该节点小的都在该节点前,比该节点大的都在节点后但是相对位置不变如:x=4时,1->3->2->4->8->5->6。public class test013 { public static void main(String[] args) {...原创 2020-03-17 16:44:59 · 123 阅读 · 0 评论 -
算法(三十二)
1、在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点保留一个,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5private static ListNode fun2(ListNode head) { ListNode res = new ListNode(0); ...原创 2020-03-15 15:11:38 · 90 阅读 · 0 评论 -
java算法(九)
1、从上往下打印出二叉树的每个节点,同层节点从左至右打印。import java.util.*;public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList<Integer> list = new ArrayLi...原创 2020-03-08 15:04:52 · 95 阅读 · 0 评论 -
java算法(三十六)
1、101-200素数的个数方法一public static void main(String[] args) { boolean flag = false; int num = 0; for(int i=101; i<200; i++){ for (int j=2; j<i; j++){ if(i%j == 0...原创 2020-03-03 09:47:36 · 144 阅读 · 0 评论 -
java算法(三十五)
1、判断二进制里1的个数。public static void main(String[] args) { int num =0; Scanner sc = new Scanner(System.in); while (sc.hasNext()){ int n = sc.nextInt(); num = fun(n); ...原创 2020-03-01 14:26:52 · 101 阅读 · 0 评论 -
算法(三十四)
1、用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integer>(); ...原创 2020-02-29 16:45:53 · 130 阅读 · 0 评论 -
算法(三十三)
1、判定字符串B是否可由字符串A变换的来 比如 “abccd” “acbcd” 可以。public boolean fun(String a, String b){ int len1 = a.length(); int len2 = b.length(); HashMap<String> hm1 = new HashMap<String>...原创 2020-02-26 21:03:44 · 200 阅读 · 0 评论 -
java学习(十五)
1、非对称加密和对称加密在加密和解密过程、加密解密速度、传输的安全性上都有所不同,具体介绍如下:1、加密和解密过程不同对称加密过程和解密过程使用的同一个密钥,加密过程相当于用原文+密钥可以传输出密文,同时解密过程用密文-密钥可以推导出原文。但非对称加密采用了两个密钥,一般使用公钥进行加密,使用私钥进行解密。2、加密解密速度不同对称加密解密的速度比较快,适合数据比较长时的使用。非...原创 2020-02-13 15:38:24 · 132 阅读 · 0 评论 -
算法(三十一)
1、给一个函数,返回 0 和 1,概率为 p 和 1-p,请你实现一个函数,使得返回 0 1 概率一样public int random(){ int i = RANDOM(); int j = RANDOM(); int result; while (true) { if (i == 0 && j ...原创 2020-02-13 11:39:41 · 216 阅读 · 0 评论 -
算法(三十)
1、输入一个正数target,打印出所有和为target的连续正数序列(至少含有两个数)。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以结果打印出3个连续序列1~5、4~6和7~8。public ArrayList<ArrayList<Integer>> fun1(int target){ArrayList<ArrayList<...原创 2020-02-13 09:15:12 · 160 阅读 · 0 评论 -
算法(二十九)
1、合并k个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6分治法public ListNode mergeKLists(ListNode[] lists) { ...原创 2020-02-09 16:34:43 · 176 阅读 · 0 评论 -
算法(二十八)
1、二叉树的最近公共祖先例如,给定如下二叉树: root =[3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出: 3解释: 节点 5 和节点 1 的最近公共祖先是节点 3。示例2:输入: root = [3,5,1,6,2,0...原创 2020-02-05 17:11:23 · 593 阅读 · 0 评论 -
算法(二十七)
1、给定一个字符串s,分割s使得s的每一个子串都是回文串返回所有的回文分割结果。(注意:返回结果的顺序需要和输入字符串中的字母顺序一致。)例如:给定字符串s="aab",返回:[↵ ["aa","b"],↵ ["a","a","b"]↵ ]import java.util.*;public class Solution { public ArrayList<Arr...原创 2020-02-04 16:36:12 · 163 阅读 · 0 评论 -
算法(二十六)
1、一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个n级台阶总共有多少种跳法?递归实现public intjumpFloor(int n){if(n<=2) return n;return jumpFloor(n-1)+jumpFloor(n-2);}非递归实现public int jumpFloor(int n){ ...原创 2020-02-04 13:20:18 · 103 阅读 · 0 评论 -
算法(二十五)
1、给定两个不字符串,求出最长公共子序列的长度。int longestPublicSubSequence(String x, String y){ if(x.length() ==0 || y.length() == 0) return 0; if(x.charAt(0) == y.charAt(0)){ return 1+longe...原创 2020-02-04 13:05:27 · 128 阅读 · 0 评论 -
算法(二十四)
1、给出两个分别有序的单链表,将其合并成一条新的有序单链表。举例:1→3→5和2→4→6合并之后为1→2→3→4→5→6public static Node mergeList(Node list1, Node list2){ if(list1==null) return list2; if(list2 == null) return list...原创 2020-02-03 15:06:18 · 197 阅读 · 0 评论 -
算法(二十三)
1、给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。贪心算法public int maxSubArray(int[] nums) { int n = nums.length; int currSum = nums[0], maxSum = nums[0]; for(int i = 1; i < n; ++i...原创 2020-02-03 14:02:00 · 172 阅读 · 0 评论 -
算法(二十二)
1、快速排序算法public void quickSort(int[] num, int left, int right){ if(num==null) return; if(left>=right) return; int i = left; int j = right; int tmp = num[0];...原创 2020-02-02 13:16:55 · 207 阅读 · 0 评论 -
算法(二十一)
1、在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5public ListNode deleteDuplication(ListNode pHead) { ListNode result = new ...原创 2020-02-01 14:54:48 · 223 阅读 · 0 评论 -
算法(二十)
1、给定一个字符串s和一组单词dict,判断s是否可以用空格分割成一个单词序列,使得单词序列中所有的单词都是dict中的单词(序列可以包含一个或多个单词)。例如:给定s=“leetcode”;dict=["leet", "code"].返回true,因为"leetcode"可以被分割成"leet code".参考代码如下:public boolean wordBreak(Stri...原创 2020-01-31 16:03:24 · 270 阅读 · 0 评论 -
算法(十九)
1、使用插入排序对链表进行排序。public ListNode insertionSortList(ListNode head) {if(head ==null){return null;}ListNode curNode = head.next;ListNode pNode =n...原创 2020-01-30 17:20:13 · 136 阅读 · 0 评论 -
算法(十七)
1、写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。方法1:import java.math.BigInteger;public class Solution {public int Add(int num1,int num2) {BigInteger bi1=new BigInteger(String.valueOf(nu...原创 2020-01-14 16:44:30 · 131 阅读 · 0 评论 -
算法(十六)
1、LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子.....LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。...原创 2020-01-13 14:40:08 · 109 阅读 · 0 评论 -
算法(十五)
1、翻转单词顺序列。eg:"I am a student."翻转为"student. a am I".public class Solution { public String ReverseSentence(String str) { if(str == null){return null;} if(str.trim().equals("")){ret...原创 2020-01-11 16:35:24 · 114 阅读 · 0 评论 -
算法(十三)
1、求从1 到 n 中1出现的次数。public class Solution {public int NumberOf1Between1AndN_Solution(int n) {int count=0;while(n>0){String str=String.valueOf(n);...原创 2020-01-10 16:19:43 · 109 阅读 · 0 评论 -
算法(十二)
1、对于给定的n个位于同一二维平面上的点,求最多能有多少个点位于同一直线上。public class Solution {public int maxPoints(Point[] points) {if(points.length <3 || points ==null)return points.length;...原创 2020-01-08 15:59:55 · 112 阅读 · 0 评论 -
算法(十一)
1、输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;public class Solution { public ArrayList&...原创 2020-01-08 13:59:22 · 90 阅读 · 0 评论 -
算法(十)
1、给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}...原创 2020-01-07 15:16:53 · 89 阅读 · 0 评论