随笔分类 - 编程之美
编程之美-微软面试心得
摘要:3.6 编程判断两个链表是否相交 基本问题:给出两个单向链表的头指针,比如h1,h2,判断这两个链表是否相交。这里为了简化问题,我们假设两个链表均不带有环。 解法: 解法1 : 直观的想法,暴力枚举。 解法2 : 采用计数的方法,将链表1的所有节点的hashcode放在一个hashset集合中,ha
阅读全文
摘要:2.10 寻找数组中的最大值与最小值 基本问题:对于一个由N个整数组成的数组,需要比较多少次才能将最大的和最小的数找出来呢? 解法1 :比较2n次,对数组中的所有元素进行遍历,一次比较,更新最大值与最小值, 解法2 : 一般情况下,最大的数和最小的数不会是同一个数。我们先把数据分成两个部分,再从这两
阅读全文
摘要:2.9 Fibonacci数列 序言 先看一下优美的Fibonacci螺旋曲线 画图代码 import turtle a, b = 0, 1 while a < 1000: turtle.circle(a, 90) a, b = b, a+b 基础问题 解法 解法1 : 递归 解法2 : 求解通项公
阅读全文
摘要:2.4 1的数目 基础问题 写一个函数$f(N)$, 返回1到N之间出现的1的个数,比如$f(12) = 5$ 解法 解法1 暴力求解 直接遍历即可 解法2 通过分析小于n的数在每一位上可能出现1的次数之和 // 2.4 1的数目 class Test{ public static void mai
阅读全文
摘要:2.3 寻找发帖水王 基础问题 就是找到一个数组中超过一半的数字 解法: vote 投票法 sort 排序法 import java.util.Arrays; class Test{ public static void main(String[] args) { int[] arr = new i
阅读全文
摘要:2.2 不要被阶乘吓倒 基本问题 1 给定一个正整数N,那么N的阶乘N! 末尾有多少个0呢? 在介绍解法之前,先介绍质因数分解 - 合数:合数是指在大于1的整数中除了能被1和本身整除外,还能被其他数(0除外)整除的数。 - 质数:质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
阅读全文
摘要:2.1 求二进制中1的个数 基础问题 对一个字节的变量,求其二进制表示中1的个数,要求算法的执行效率尽可能的高 // 求二进制中1的个数 // 对一个字节的变量,求其二进制表示中1的个数,要求算法的执行效率尽可能的高 class Test{ public static void main(Strin
阅读全文
摘要:3.4 从无头链表中删除节点 基础问题 假设有一个没有头指针的单链表,一个指针指向中间的一个节点,不是第一个节点,也不是最后一个节点,删除该节点 扩展问题 给你一个链表,只遍历一次,在原地翻转链表 class Test{ public static class ListNode{ int val;
阅读全文
摘要:3.3 计算字符串的相似度 给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 解法1 采用递归的方法进行计算 思想分析:重点是转化成为子问题的过程 s1[1,1
阅读全文
摘要:一摞烙饼的排序 基本问题 假设有n块大小不一样的烙饼,那么最少要翻动几次,才能达到最终有序的结果。 思路:每次找到最大的然后从将最大的以及最大的上面的反转,这时候最大的在最上面,然后将整个反转,最大的就在最下面了。然后再对除了最下面的n-1个烙饼进行上述的操作,知道全部的烙饼有序。 例如:13524
阅读全文
摘要:3.2 电话号码对应的英语单词 3.2.1 从字母组合中找到一个有意义的单词来表述一个电话号码,例如"computer" --> 26678837 利用递归进行 dfs+剪枝 import java.util.*; import java.util.Set.*; class Test{ public
阅读全文
摘要:3.1 字符串移位的问题 以空间换时间 tips : 判断是否包含在自己的循环移位中,就可以拼接两个原字符串,查找目标字符串是否存在于拼接之后的字符串中即可。 class Test{ public static void main(String[] args) { String s1 = "AABB
阅读全文
摘要:1.2 中国象棋将帅问题 请写出一个程序,输出A,B所有合法的位置,要求在代码中只使用一个变量。 位运算:采用一个8bit位,左边4bit,代表A的位置,右边4bit,代表B的位置,然后每次都去更新bit位即可。 class Test{ public static void main(String[
阅读全文