面试指南
文章平均质量分 90
wuxiaosi808
这个作者很懒,什么都没留下…
展开
-
27枚硬币,找出较重的一个-Python
称硬币问题-Python:一. 问题描述现在有27枚硬币,其中有一枚假币,假币跟真币长得一摸一样,但是稍微重一些。摆在桌上有一个称重天平,要求用最小的次数找出假币,并写出算法代码。二. 解题思路首先,思考一下这个问题的解法,很多人开始想到的都说对开。就是把硬币分成两份,比如假如我们有9个硬币,每4一份,分成4,4,1三份,再对前两份进行称重。那么可能有3个结果:1).两份完全相等,剩下的1个就是假币2).第一组更重,然后继续二分称重3).第二组更重,然后继续类似上面第二种情况进行称重我们需转载 2020-08-17 17:37:43 · 1519 阅读 · 0 评论 -
判断两个链表是否相交,如果相交如何找到第一个相交结点。
判断两个链表是否相交。思路:如果两个链表相交,那么他们一定有相同的尾节点,分别遍历两个链表,记录他们的尾节点,如果尾节点相同,则两个链表相交,否则不相交。public boolean isIntersect(Node h1,Node h2){if(h1==null||h2==null)return false;//找到链表1的最后一个结点Node tail1=h1;原创 2017-09-29 08:54:42 · 726 阅读 · 0 评论 -
数据库引擎
数据库引擎介绍MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的。要添加一个新的引擎,就必须重新编译MYSQL。在缺省情况下,MYSQL支持三个引擎:ISAM、MYISAM和HEAP。另外两种类型INNODB和BERKLEY(BDB),也常常可以使用。如果技术高超,还可以使用MySQL+API自己做一个引擎。下面介绍几种数据库引擎: ISAM:ISAM是一个定义明确且历经转载 2017-10-09 15:14:17 · 313 阅读 · 0 评论 -
数组中两个元素的最小距离
问题:给定一个数组,数组中含有重复元素,给出两个数n1和n2,求这两个数在数组中所出现位置的最小距离。例如,数组{4,5,6,4,7,4,6,4,7,8,5,6,4,3,10,8},4和8的最小距离是2.思路:遍历数组,会遇到两个情况,一,当遇到n1时候,记录下n1对应的数组下标的位置n1_index,通过求n1_index与上次遍历到n2的下标值n2_index的差,可以求出最近一次遍历到n原创 2017-10-01 20:10:05 · 3091 阅读 · 0 评论 -
计算两个有序整型数组的交集
问题:假设两个含有N个元素的有序整型数组a,和b,如何得到他们的交集。方法1,可以用二路归并法。分别从头开始遍历两个数组,比较对应的数值,如果相同就放到一个list中。package Array;import java.util.*;/** * Created by Administrator on 2017/10/1. */public class JiaoJi {原创 2017-10-01 21:08:58 · 950 阅读 · 0 评论 -
字符串反转
问题:把一个句子中的单词进行反转。例如,”how are you”,反转后变成"you are how";思路:只需要进行两次字符反转的操作就行,第一次对整个字符串的字符进行反转,结果为:uoy era woh,可以发现每个单词是反的,然后分别对每个单词进行反转即可。package zifuchuan;/** * Created by Administrator on 2017/原创 2017-10-01 21:32:41 · 603 阅读 · 0 评论 -
二叉树中结点的最大距离
问题:结点的距离指这两个结点之间边的个数。求一棵二叉树中相距最远的两个结点之间的距离。思路:首先,求左子树距离根结点的最大距离,记为leftMaxDistance,其次,求右子树距离根结点的最大距离,记为rightMaxDistance,那么二叉树中结点的最大距离maxDistance满足maxDistance=leftMaxDistance+rightMaxDistance.pack原创 2017-10-02 10:18:49 · 792 阅读 · 0 评论 -
不使用比较运算求出两个数的最大值与最小值
通常来说,再求两个数中国的最大值最小值,最常用的办法就比较大小。不比较的方法师哥比较巧妙的方法。最大值max(a,b)=(a+b+|a-b|)/2,最小值min(a,b)=(a+b-|a-b|)/2,。但是存在一个问题,当两个数比较大的时候容易出现数据溢出的情况。解决办法就是将两个数转换为长整型,避免出现溢出的情况.package Array;/** * Created by Adm原创 2017-10-02 11:10:04 · 4103 阅读 · 0 评论 -
无序数组最小的K个数
题目:给定一个无序的整型数组arr,找到其中最小的k个数。方法一:将数组排序,排序后的数组的前k个数就是最小的k个数。时间复杂度:O(nlogn)方法二:时间复杂度:O(nlogk)维护一个有k个数的大根堆,这个堆代表目前选出的k个最小的数。在堆的k个元素中堆顶元素是最小的k个数中最大的那个。接下来要遍历整个数组,遍历的过程中看当前数是否比堆顶元素小。如果是,就把堆转载 2017-10-04 10:10:40 · 937 阅读 · 0 评论 -
lettcode:二分法sqrt(x)
题目:Implementint sqrt(int x). Compute and return the square root of x. 代码如下:public class Solution { public int sqrt(int x) { if(x return x; int begin=1原创 2017-10-04 15:40:03 · 325 阅读 · 0 评论 -
用递归方法求数组的最大值
1、直接利用递归:[java] view plain copy package programmer; import java.util.Scanner; /* * 利用递归算法求最大值 */ public class MaxRecursion { public int maxRecursion(int[] A, int low, int转载 2017-10-12 21:21:18 · 3046 阅读 · 0 评论 -
递归方法求数组最大值
package Array;import java.util.*;/** * Created by Administrator on 2017/10/14. */public class leftToright {public int reMax(int a[],int low,int high){ if(low>high){ return -1; }原创 2017-10-14 11:11:38 · 1444 阅读 · 0 评论 -
算法工程师 -常见面试题
▌1. LDA(线性判别分析) 和 PCA 的区别与联系首先将LDA 扩展到多类高维的情况,以和问题1 中PCA 的求解对应。假设有N 个类别,并需要最终将特征降维至d 维。因此,我们要找到一个d 维投影超平面,使得投影后的样本点满足LDA 的目标—最大化类间距离和最小化类内距离。回顾两个散度矩阵, 类内散度矩阵在类别增加至 N 时仍满足定义, 而之前两类问题的类间散度矩阵在...转载 2019-09-03 11:38:52 · 10546 阅读 · 0 评论 -
数据库的优化
数据库SQL优化大总结之 百万级数据库优化方案网上关于SQL优化的教程很多,但是比较杂乱。近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正补充。作者:雲霏霏来源:雲霏霏的博客|2014-07-18 09:33 移动端 收藏 分享【沙龙】51CTO诚邀您9月23号和多位技术大咖一起聊智能CDN的优化之路,转载 2017-09-20 20:48:04 · 336 阅读 · 0 评论 -
打印有序链表的公共部分
题目:给定两个有序链表的头指针head1和head2,打印两个有序链表的公共部分。思路:如果head1的值小于head2的值,head1向下移动;如果head1的值大于head2的值,head2向下移动;如果head1的值和head2的值相等,则打印这个值,head1和head2 都向下移动。head1或者head2有任何一个移动到null,整个过程结束。pub原创 2017-09-03 14:06:33 · 261 阅读 · 0 评论 -
Java中的GC(垃圾回收)
在Java 中,垃圾回收师哥非常重要的概念,主要作用是回收程序中不再使用的内存。在c/c++语言开发中,开发人员必须非常仔细的管理好内存的分配与释放,否则可能会导致程序的崩溃。为了减轻开发人员的负担,Java语言提供了垃圾回收器来自动检测对象的作用域,可自动的把不在被使用的内存空间释放掉。垃圾回收器只有负责三部分:分配内存、确保被引用对象的内存不被错误的回收以及回收不再被引用的对象的内存空间。原创 2017-09-19 14:56:58 · 411 阅读 · 0 评论 -
反转字符串
1. 使用Array.Reverse方法对于字符串反转,我们可以使用.NET类库自带的Array.Reverse方法public static string ReverseByArray(string original){char[] c = original.ToCharArray();Array.Reverse(c);return new string(c);转载 2017-09-05 15:43:49 · 181 阅读 · 0 评论 -
反转字符串中的单词
效果:输入: "java and python"输出: "avaj dna nohtyp" 代码:版本1: 不考虑字符串开头有空格,单词间有多个空格空格的情况public class StringReverse { // 翻转一段字符串 public static void swapStr(char[] arr, int begin, int end转载 2017-09-05 15:51:04 · 521 阅读 · 0 评论 -
字符串数组元素排列与组合
我们在笔试面试过程中经常会遇到关于排列与组合的问题,其实这些可以通过递归简单的实现,看下面两个例子:(1)关于字符串排列的问题输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。可以这样想:固定第一个字符a,求后面两个字符bc的排列。当两个字符bc的排列求好之后,我们把第一个转载 2017-09-05 15:56:56 · 844 阅读 · 0 评论 -
字符串右移K位
package zifuchuan;/** * Created by Administrator on 2017/9/22. */public class RightMoveK { public static void main(String[] args){ String str = "abcdefg"; System.out.println("原创 2017-09-22 19:48:08 · 479 阅读 · 0 评论 -
打印矩阵上三角java
package paixu;/** * Created by Administrator on 2017/9/22. */public class PrintSanjiao { public static void main(String[] args){ int[][] num={ { 1, 2, 3, 4},原创 2017-09-22 20:57:44 · 1663 阅读 · 0 评论 -
二叉树的递归非递归遍历
二叉树的遍历一直是常考题,遍历可以使用递归方法也可以使用非递归方法。首先先看下递归方法。public class Node{public int value;public Node left;public Node right;public Node(int data){this.value=data;}}//前序遍历public void preO原创 2017-09-24 18:04:26 · 242 阅读 · 0 评论 -
未排序正整数数组中累加和为给定值的最长子数组长度
题目:给定一个数组arr,该数组无序,每个数正数,给定一个K,求arr的所有子数组中所有元素相加和为k的最长子数组的长度。例如:arr=[1,2,1,1,1],k=3结果是3,[1,1,1]的长度。思路:首先用两个位置来标记子数组左右两头,记为left与right,开始的时候都在数组的最左边即left=right=0,过程如下:1,开始变量left=0,right=0,代表原创 2017-09-24 20:52:58 · 620 阅读 · 0 评论 -
leetCode 系列:best time to buy and sell stock
由于最近在准备找工作,会刷写LeetCode的经典题目。因为最近编码能力实在不强,有些题目需要借鉴其他博主或者大神的解题思路,如有冒犯,请多原谅。如有错误,请指正,定会虚心接受并改正,不胜感激!题目描述:Say you have an array for which the i th element is the price of a given stock on dayi.原创 2017-07-20 11:15:33 · 180 阅读 · 0 评论 -
字符串的组合
与字符串的排列不同,一个字符串的两个组合如果包含相同的字符则认为是相同的字符串。给出一个可输出一个字符串中的字符所有可能组合算法,例如,输入串“abc”,“ac”,"ab"是不同的组合,而“ab”,"ba"是相同的组合。解决方案:从1~n的每个长度r均生成n!/r!(n-r)!个字符串,其中n是输入字符串的长度。算法:对于输入的字符串中的每个字符,1,将当前的字符放入输入字符串中,并输出;原创 2017-09-16 14:45:30 · 305 阅读 · 0 评论 -
TCP长连接与短连接的区别
1. TCP连接当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次握手的,而释放则需要4次握手,所以说每个连接的建立都是需要资源消耗和时间消耗的经典的三次握手示意图:经典的四次握手关闭图:2. TCP短连接我们模拟一下TCP短连接的情况,c转载 2017-09-08 14:57:50 · 193 阅读 · 0 评论 -
二叉搜索树转换为双向链表
题目: 输入一棵二叉搜索树,将该二叉搜索树转换为一个排序的双向链表。要求:不能创建任何新的结点,只能调整树中结点指针的指向。如下图:解法1(非递归): 思想:二叉搜索树的中序遍历是一个有序的数组,在中序遍历的时候,用 Pre 指针保存前一个节点,当访问到当前节点的时候,将 Pre 节点右指针,指向当前节点,当前节点的左指针指向 Pre。 这样中序遍历完二叉搜索树,就产生了一个双向链转载 2017-09-18 17:05:43 · 431 阅读 · 0 评论 -
Java Socket是什么
网络上的两个程序通过一个双向的通信连接实现数据的交换,这个双向链路的一端称为一个socket。socket也就是套接字,可以用来实现不同虚拟机或者不同计算机之间的通信。在Java语言中,socket可以分为两种类型:面向连接的socket通信协议(TCP)和面向无连接的socket通信协议(UDP)。任何一个socket都是用IP地址与端口号唯一确定的。基于TCP的通信过程如下:首先,服务原创 2017-09-19 14:22:19 · 5024 阅读 · 0 评论 -
hashset,hashmap,hashtable区别
HashSet HashTable HashMap的区别 及其Java集合介绍(1)HashSet是set的一个实现类,hashMap是Map的一个实现类,同时hashMap是hashTable的替代品(为什么后面会讲到).(2)HashSet以对象作为元素,而HashMap以(key-value)的一组对象作为元素,且HashSet拒绝接受重复的对象.HashMap可以看作三个视图:转载 2017-09-04 09:45:42 · 760 阅读 · 0 评论