
interview
bitcarmanlee
这个作者很懒,什么都没留下…
展开
-
反转链表与分组反转链表
1.反转链表经典的反转链表,先上代码public class ListNode { int data; ListNode next; public ListNode(int data) { this.data = data; }}public class PrintList { public static void print(ListNode root) { while (root != null) {原创 2020-06-14 21:38:32 · 737 阅读 · 0 评论 -
交换两个数 不使用中间变量
交换两个数是常见的需求。实际中我们经常采用的做法是通过一个tmp的中间变量来达到目的。但是如果我们现在不想使用那个中间变量,怎么破?so,以下提供两种方法1.通过四则运算来实现 @Test public void method_1() { int a = 3; int b = 4; a = a + b; b = a - b原创 2016-06-15 16:00:49 · 1036 阅读 · 0 评论 -
各大IT公司经典面试题总结
1.两圆相切问题一个小圆半径是1厘米,一个大圆半径是5厘米,小圆沿着大圆转圈,请问要转几圈可以转完大圈? 解答:如果大圆小圆的半径为多少,外切转圈需要(R/r)+1圈,内切需要(R/r)-1圈。所以,本题的答案是6。原创 2016-07-04 18:59:26 · 4945 阅读 · 0 评论 -
字符串转整数
字符串转整数,也是一个经典的问题了。字符串转整数本身的逻辑很简单,难就难在各种特殊输入与特殊情况。所以,这不是一道考察算法的题,而是一道考察细节与编码习惯的题。我们考虑如下特殊情况: 1.输入为null或者为空字符串。 2.输入开头带空格的字符串。 3.输入带有正负号的数字。 4.数值范围超出最大正整数或者最小负整数。package edu.bit.algorithm;public clas原创 2016-08-29 18:28:23 · 1406 阅读 · 0 评论 -
面试题链接总结
1.JAVA相关【Java高级开发工程师】近一个月的面试总结 http://blog.youkuaiyun.com/pistolove/article/details/73610588原创 2017-06-28 22:31:45 · 518 阅读 · 0 评论 -
无重复字符的最长子串
1.问题问题如下:给定一个字符串,找出不含有重复字符的最长子字符串的长度。例如:输入为"abcdeabd",没有重复字符的最长字符串为"abcde",长度为5。2.暴力法我们可以逐个字符遍历字符串,将所有的子串组合找出来,看看是否包含不重复的字符。 public static int longestLen(String s) { int n = s.length(...原创 2019-03-09 20:13:22 · 485 阅读 · 0 评论 -
删除排序数组中的重复项
1.题目描述给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例2:给定 ...原创 2019-03-09 20:36:25 · 288 阅读 · 0 评论 -
sort colors 三色排序
1.问题给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]2.解法一之计数排序计数排序的思路比较简单,就是得到各个元素出现的次数,然后重新写入原来的数组中。直接上代...原创 2019-03-09 23:04:11 · 1608 阅读 · 0 评论 -
Partition List 将链表分成两部分
1.问题给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例:输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->52.解法将所有小于给定值的节点组成一个新的链表A,将所有大...原创 2019-03-10 17:44:33 · 798 阅读 · 0 评论 -
Reverse Linked List 反转链表
1.题目反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL2.解法1.将当前节点cur的下一个节点cur.next取出来保存为tmp。2.更改当前节点cur的下一个节点为pre,也即反转当前结点的next指针指向前。3.将pre指针前移,更改为cur,这样下一...原创 2019-03-11 22:50:12 · 581 阅读 · 0 评论 -
最长递增子序列(LIS longest-increment-subsequence)最长连续递增子序列 最大连续子序列和
1.问题描述给定一个数组,就数组最长递增子序列(子序列可以不连续)2.解法非常经典的动态规划问题,算法的时间复杂为O(n^2),空间复杂度为O(n)。关键是结果数组dp[i]怎么计算呢?每次遍历所有j<i中数组的元素,判断array[j]是否小于array[i]。如果是,检查dp[i]与dp[j]+1的大小,并且更新dp[i]。 public static int lis...原创 2019-03-27 10:09:09 · 898 阅读 · 0 评论 -
过河问题详解
1.问题描述在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥去的。不幸的是,N个人一共只带了一只手电筒,而桥窄得只够让两个人同时过。如果各自单独过桥的话,N人所需要的时间已知;而如果两人同时过桥,所需要的时间就是走得比较慢的那个人单独行动时所需的时间。问题是,如何设计一个方案,让这N人尽快过桥。或许还有类似的问题,问题的描述可能不尽完全相...原创 2019-04-13 15:45:17 · 4223 阅读 · 0 评论 -
反转字符串 不同方式
实际中经常有反转字符串的需求。在高级语言中,反转字符串是一件相对比较容易的事情。下面以python与java为例,为大家演示如何反转字符串。1.python版本#切片方式def slice_method(raw_str): return raw_str[::-1]#交换的方式def swap_method(raw_str): list_str = list(raw_str)原创 2016-06-28 12:02:55 · 896 阅读 · 0 评论 -
大数乘法与大数加法 java实现
最近碰到大数乘法与大数加法的需求,如果直接用int类型会溢出。于是自己写了个大数乘法与大数加法的代码,就当自己练练手了。1.大数加法大数加法的逻辑相对乘法稍微简单一些。先将输入的两个字符串逆序生成字符数组,然后相同位上的字符相加保存在一个结果数组中。最后遍历结果数组,如果当前位的结果大于或等于10,则先将当前位的数值除以10加入下一位,当前位的值为取10的模。看代码如下:package leilei原创 2016-06-28 11:06:16 · 4980 阅读 · 0 评论 -
数组中只出现一次的数
1.数组中有一个数字只出现一次数组中有很多成对出现的数字,这些数字的顺序是随机出现的。但是里面有一个数字缺失,怎样用最快的方式将这一个数字找出来?由于只有一个数字是出现一次,其他都是成对出现的,所以此时没必要用搜索来做了。利用异或的性质:1.一个数自己与自己异或必为0;2.a^b=b^a,即异或的交换律。如果我们将数组中的所有元素都异或一遍,得到的结果必为自己。按咱们的惯例,talk is chea原创 2016-06-15 17:36:14 · 786 阅读 · 0 评论 -
社交网络中的共同好友计算(一度好友与二度好友)
社交网络中经常存在求共同好友的需求,比如最常见的求一度好友与二度好友,如上图所示。package bit.edu.cn;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class Friend { /* * 思路:如果A与转载 2016-05-24 16:46:36 · 12718 阅读 · 0 评论 -
最大连续子序列和
求最大连续子序列的和是一个很经典很古老的面试题了,本博主记得在刚毕业找工作面试那会也遇到过同款问题。今儿突然想起来,正好快到毕业季,又该是苦逼的应届生们各种面试的时候到了,就给写了一些小代码解决这个问题。也希望各位找工作的同志们都拿到心目中理想的offer,从此以后,战胜高富帅,赢取白富美,走上人生巅峰。1.问题描述假设有一数组(python里为list啦)[1,3,-3,4,-6,-1],求数组中原创 2016-05-28 18:02:09 · 6699 阅读 · 2 评论 -
二叉树 先序遍历 中序遍历 后续遍历 java实现
二叉树是一种非常重要的数据结构,也是平时面试的时候面试官喜欢出的问题之一。关于二叉树的概念,就不做过多解释,估计各种课本网络上各种资料都充斥着关于二叉树的原理介绍。我们是实战派,原理不在啰嗦,重点看代码,看看怎样实现一棵二叉树,并分别用实现先序遍历,中序遍历以及后续遍历。package leilei.bit.edu.tree;import java.util.Stack;public class B原创 2016-05-28 21:22:24 · 3009 阅读 · 0 评论 -
n的阶乘末尾含0的个数
本博主曾被问过这样一个问题:求n的阶乘中末尾含有多少个0。例如n=10,n!=3628800,那么n!末尾有两个0。直接计算n!的值显然不合适,因为n!数值太大,很容易溢出。而且这种无脑的计算方式,显然不适合面试的时候装nbility拿高薪offer。1解法一:分解质因数本博主当时被问这个问题的时候的第一反应就是:要相乘产生0,那肯定是与5相乘的结果。对n!如果分解质因数的话,结果为0的个数只与2与原创 2016-05-30 17:08:12 · 4263 阅读 · 1 评论 -
二分查找 python实现
二分查找的python查找,经典的面试题,啥也不多,直接上代码def binSearch(list,num): low = 0 high = len(list) - 1 middle = (high + low) / 2 while(low <= high): if list[middle] > num: high原创 2016-03-28 22:02:51 · 3877 阅读 · 4 评论 -
字符串全排列 java实现
经常会遇到字符串全排列的问题。例如:输入为{‘a’,’b’,’c’},则其全排列组合为abc,acb,bac,bca,cba,cab。对于输入长度为n的字符串数组,全排列组合为n!种。思路:从字符串数组中每次选取一个元素,作为结果中的第一个元素。然后,对剩余的元素全排列,步骤跟上面一样。很明显这是个递归处理的过程,一直到最后即可。按照惯例,talk is cheap,show me the code原创 2016-06-01 19:05:19 · 20811 阅读 · 9 评论 -
字符串 全组合
对于一个字符数组,例如[“a”,”b”,”c”],求其全组合形式。结果为[‘a’, ‘b’, ‘ab’, ‘c’, ‘ac’, ‘bc’, ‘abc’]。本博主被问到过这么一个问题。整理了一下解题思路: 结果集里,先将’a’放进来,然后再将’b’添进来,并且将’b’跟结果集中所有已存在的组合相加,以此类推。def get_arranges(): raw_list = ["a","b","c原创 2016-06-02 13:03:13 · 626 阅读 · 0 评论 -
字符串旋转 不同解法
本博主被问到一个这样的问题: 给定一个字符串”abcdefg”,要求把字符串前面的若干个字符,比如3个字符,即”abc”移动到字符串的末尾,最后的字符串变为”defgabc”。解法一玩数据的同学习惯用python,如果用python的话,这个问题自然没有太多技术含量,分分钟搞定的节奏。因为python处理各种字符串的方便程度,实在是令你想不到用其他方式去解决。def invert_str(n):原创 2016-06-10 14:26:47 · 1789 阅读 · 0 评论 -
快排 递归与非递归实现 优化
快排,面试题中出现概率最高的一道,甚至没有之一。python实现,直接上代码def getMiddle(list,low,high): tmp = list[low] while(low < high): while(low < high and list[high] > tmp): high -= 1 list[low] =原创 2016-06-11 22:15:34 · 4747 阅读 · 0 评论 -
统计单词个数 状态机方法
遇到这样一个问题:如果统计一段由字符和和空格组成的字符串中有多少个单词? 经典的解答方式为状态机的方法。直接看代码吧,相关的解题思路已经在注释中:package leilei.bit.edu.stacktest;public class WordCountOfState { public enum State { INIT_STATE,WORD_STATE,SPACE_STA原创 2016-06-12 00:11:58 · 1009 阅读 · 0 评论 -
插入排序 java实现
插入排序也是一种经典的排序方式,适合于已经基本有序,且数据量较小的数组。自己动手写了一个java版本的插入排序。请同学们参考。package leilei.bit.edu.t2;public class InsertSort { public static void insertSort(int[] a) { int arr_length = a.length;原创 2016-05-10 10:07:45 · 6944 阅读 · 0 评论