算法问题
宫羽卫-银飞羽
主要从事与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 · 165 阅读 · 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 · 643 阅读 · 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 · 122 阅读 · 0 评论 -
最简单实现回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文...原创 2018-07-23 17:46:12 · 427 阅读 · 0 评论 -
字符串转整数 (atoi)
实现 atoi,将字符串转为整数。在找到第一个非空字符之前,需要移除掉字符串中的空格字符。如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字符即为整数的值。如果第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。字符串可以在形成整数的字符后面包括多余的字符,这些字符可以被忽略,它们对于函数没有影响。当字符串中的第一个非空字...原创 2018-07-23 17:26:39 · 237 阅读 · 0 评论 -
两数相加
给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807class Solution { ...原创 2018-07-17 20:20:39 · 119 阅读 · 0 评论 -
获取数组中超过一半数量的数值
采用阵地攻守的思想:第一个数字作为第一个士兵,守阵地;count = 1;遇到相同元素,count++;遇到不相同元素,即为敌人,同归于尽,count--;当遇到count为0的情况,又以新的i值作为守阵地的士兵,继续下去,到最后还留在阵地上的士兵,有可能是主元素。再加一次循环,记录这个士兵的个数看是否大于数组一般即可。原创 2017-09-10 10:59:25 · 318 阅读 · 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 · 3116 阅读 · 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 · 446 阅读 · 0 评论 -
求两个字符串的最大连续公共字串
如下两个字符串,公共连续字符串为abcdf,求出这个abcdf,"aaffffsfabcdfasf", "aaaadfsabcdfsdb"假设字符串长度分别为m,n,这个题有个m*n*min(m,n)复杂度的方法,这个方法比较慢,暂时不考虑。另一个种方法是动态规划:设置二维数组dp[][], dp[i][j]==0表示第一个字符串的第i个字符与第二个原创 2017-08-02 10:36:53 · 363 阅读 · 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 · 353 阅读 · 0 评论 -
网易 最大奇约数
publicclass Main{ publicstatic void main(String[] args) { Scanner s=newScanner(System.in); longnum=s.nextInt(); longsum=0;转载 2017-07-27 09:20:56 · 329 阅读 · 0 评论 -
网易 买苹果 最简单求法
//复杂度O(1)方法importjava.util.*;publicclass Main{ publicstatic void main(String args[]) { Scanner in = newScanner(System.in); while(in.hasNext原创 2017-07-27 09:35:38 · 1476 阅读 · 0 评论 -
常见回文问题
1.对于数字回文问题 如125341 =1 2534 1 = 1 2 5 7 1 = 17 7 12.去字符串中的值变成回文 解题思路是,取其反序列与原来序列的最大公共子序列原创 2017-07-31 09:16:01 · 548 阅读 · 0 评论 -
正则匹配算法题
判断给出的正则表达式是否能适配,这里正则表达式的适配规则是:"." 适配任意单个字符"x*" 适配0个或者多个x字符isMatch("aa","a") → falseisMatch("aa","aa") → trueisMatch("aaa","aa") → falseisMatch("aa", "a*") → trueisMatch("aa", ".*") → true翻译 2017-08-01 15:04:30 · 686 阅读 · 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 · 275 阅读 · 0 评论