
算法问题
宫羽卫-银飞羽
主要从事与Java后台开发,目前就职与上海美团公司作为后台开发,擅长于多线程并发开发、数据库设计、属性Spring、mybatis等基础主流框架。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
最简单的快排序
public static void quickSort(int[] array, int low, int high) { if (low >= high) { return; } int i, j, key; i = low; j = high; key = array[low]; while (i < j...原创 2020-02-14 16:55:34 · 196 阅读 · 0 评论 -
HashMap源码注解tableSizeFor()
源码: static final int tableSizeFor(int cap) { int n = cap - 1; n |= n >>> 1; n |= n >>> 2; n |= n >>> 4; n |= n >>> 8; n |= n >>&g原创 2018-08-01 17:40:02 · 692 阅读 · 0 评论 -
最长回文子串
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。 示例 1: 输入: "babad" 输出: "bab" 注意: "aba"也是一个有效答案。 示例 2: 输入: "cbbd" 输出: "bb" class Solution { public String longestPalindrome(String ss) { ...原创 2018-07-18 20:06:45 · 151 阅读 · 0 评论 -
最简单实现回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文...原创 2018-07-23 17:46:12 · 465 阅读 · 0 评论 -
字符串转整数 (atoi)
实现 atoi,将字符串转为整数。 在找到第一个非空字符之前,需要移除掉字符串中的空格字符。如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字符即为整数的值。如果第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。 字符串可以在形成整数的字符后面包括多余的字符,这些字符可以被忽略,它们对于函数没有影响。 当字符串中的第一个非空字...原创 2018-07-23 17:26:39 · 271 阅读 · 0 评论 -
两数相加
给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807 class Solution { ...原创 2018-07-17 20:20:39 · 148 阅读 · 0 评论 -
获取数组中超过一半数量的数值
采用阵地攻守的思想: 第一个数字作为第一个士兵,守阵地;count = 1; 遇到相同元素,count++; 遇到不相同元素,即为敌人,同归于尽,count--;当遇到count为0的情况,又以新的i值作为守阵地的士兵,继续下去,到最后还留在阵地上的士兵,有可能是主元素。 再加一次循环,记录这个士兵的个数看是否大于数组一般即可。原创 2017-09-10 10:59:25 · 354 阅读 · 0 评论 -
常见面试手写算法
import java.time.chrono.JapaneseChronology; import java.util.Arrays; public class Main { public static int binarySort(int[] number, int n) { int start = 0; int end = number.length - 1;原创 2017-09-05 14:49:02 · 3175 阅读 · 2 评论 -
获取一个数字的1的位数
采用数和数减1相与 public static int count(int p1, int p2) { int temp = p1 ^ p2; int num = 0; while(temp > 0) { temp &= (temp - 1 ); n原创 2017-09-05 10:59:34 · 487 阅读 · 0 评论 -
求两个字符串的最大连续公共字串
如下两个字符串,公共连续字符串为abcdf,求出这个abcdf, "aaffffsfabcdfasf", "aaaadfsabcdfsdb" 假设字符串长度分别为m,n,这个题有个m*n*min(m,n)复杂度的方法,这个方法比较慢,暂时不考虑。 另一个种方法是动态规划: 设置二维数组dp[][], dp[i][j]==0表示第一个字符串的第i个字符与第二个原创 2017-08-02 10:36:53 · 397 阅读 · 0 评论 -
网易2017 跳石板问题
import java.util.LinkedList; import java.util.List; import java.util.Scanner; public class TiaoShiBan { public static List getDivisor(int number){ List divisor = new LinkedList(); for原创 2017-07-27 09:14:00 · 397 阅读 · 0 评论 -
网易 最大奇约数
public class Main{ public static void main(String[] args) { Scanner s=new Scanner(System.in); long num=s.nextInt(); long sum=0;转载 2017-07-27 09:20:56 · 378 阅读 · 0 评论 -
网易 买苹果 最简单求法
//复杂度O(1)方法 import java.util.*; public class Main{ public static void main(String args[]) { Scanner in = new Scanner(System.in); while(in.hasNext原创 2017-07-27 09:35:38 · 1510 阅读 · 0 评论 -
常见回文问题
1.对于数字回文问题 如125341 =1 2534 1 = 1 2 5 7 1 = 17 7 1 2.去字符串中的值变成回文 解题思路是,取其反序列与原来序列的最大公共子序列原创 2017-07-31 09:16:01 · 590 阅读 · 0 评论 -
正则匹配算法题
判断给出的正则表达式是否能适配,这里正则表达式的适配规则是: "." 适配任意单个字符"x*" 适配0个或者多个x字符 isMatch("aa","a") → false isMatch("aa","aa") → true isMatch("aaa","aa") → false isMatch("aa", "a*") → true isMatch("aa", ".*") → true翻译 2017-08-01 15:04:30 · 731 阅读 · 0 评论 -
大数相乘
乘积是逐位相乘,也就是aibj,结果加入到积C的第i+j位,最后处理进位即可,例如:A =17 = 1*10 + 7 = (7,1)最后是十进制的幂表示法,幂次是从低位到高位,以下同。B=25 = 2*10 + 5 = (5, 2);C = A * B = (7 * 5, 1 * 5 + 2 * 7, 1 * 2) = (35, 19, 2) = (5, 22, 2) = (5, 2. 4)=42原创 2017-08-02 09:19:56 · 367 阅读 · 0 评论