随笔分类 - 解过的算法题目和带来的思考
摘要:网上看到的写法,真的是机智。当然可能有一些细节问题:UTF-8编码中不是ascii码的都会长度不一致。但是感觉还是机智的不行。 补充:事后测试了效率,在1千万行的情况下,用一个for循环会快3秒。for循环用时815ms,getBytes用时3722ms。在效率要求不是特别高的情况下,getByte
阅读全文
摘要:其实一开始想错了,把这个问题想难了,导致没有思路,现在好了很多。 题目: Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets
阅读全文
摘要:小明陪小红去看钻石,他们从一堆钻石中随机抽取两颗并比较她们的重量。这些钻石的重量各不相同。在他们们比较了一段时间后,它们看中了两颗钻石g1和g2。现在请你根据之前比较的信息判断这两颗钻石的哪颗更重。 给定两颗钻石的编号g1,g2,编号从1开始,同时给定关系数组vector,其中元素为一些二元组,第一
阅读全文
摘要:有一棵二叉树,树上每个点标有权值,权值各不相同,请设计一个算法算出权值最大的叶节点到权值最小的叶节点的距离。二叉树每条边的距离为1,一个节点经过多少条边到达另一个节点为这两个节点之间的距离。 给定二叉树的根节点root,请返回所求距离。 真是醉了,看漏了叶子节点。 代码:
阅读全文
摘要:先要搞明白:最长公共子串和最长公共子序列的区别。 最长公共子串(Longest Common Substirng):连续 最长公共子序列(Longest Common Subsequence,LCS):不必连续 实在是汗颜,网上做一道题半天没进展: 给定一个字符串s,你可以从中删除一些字符,使得剩下
阅读全文
摘要:被这道题困了好久,看了剑指Offer才知道OJ上的要求有点迷惑性。 题目: 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。 一直以为要按照顺序输出,想的方法是插入排序算法复杂度是O(N*K),当然这个地方就显得自己有点蠢了。不
阅读全文
摘要:这是一道比较经典的题目。我先是在百度的在线笔试中遇到,然后发现剑指Offer上有原题。当然题目并不完全一样不过大致相同。 百度笔试是给你两个根节点判断第棵树是不是第一棵树的子树。剑指Offer是问你第二颗数是不是第一棵树的子结构(也就是说可是是第一棵二叉树的中间阶段)。 笔试的时候恁是没完全通过测试
阅读全文
摘要:问题是:给你一个数组,求解出现次数第K多的元素。当然leetcode上的要求是算法复杂度不能大于O(N*logN)。 首先这个问题我先是在leetcode上看到,当时想了两种做法,做到一半都觉得不是很好,正在思考别的方法。然后在牛客网上看别人的面试经历,看到一个应聘者和用我几乎完全一样的思路尝试在面
阅读全文
摘要:遇到了一个很简单而有意思的问题,可以看出不同的算法策略对这个问题求解的优化过程。问题:寻找数组中的第K大的元素。 最简单的想法是直接进行排序,算法复杂度是O(N*logN)。这么做很明显比较低效率,因为不要求别的信息只要计算出第K大的元素。当然,如果在某种情况下需要频繁访问第K大的元素就可以先进行一
阅读全文
摘要:题目: 小明被劫持到X赌城,被迫与其他3人玩牌。 一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。 这时,小明脑子里突然冒出一个问题: 如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢? 请填写该整数,不要填写任何多余的内容或
阅读全文
摘要:例题7-1: 输入正整数n,按从小到大的顺序输出所有形如abcde / fghij = n 的表达式,其中a~j恰好为0~9的一个全排列(可以有前导0),2 <= n <= 79。 思考: 设M / N = n 这道题在做的时候的一个细节没有走最优化的路线导致我的算法较为卡顿,原因是没有反向思考问题
阅读全文
摘要:题目: 给定一整型数列{a1,a2...,an},找出连续非空子串{ax,ax+1,...,ay},使得该子序列的和最大,其中,1<=x<=y<=n。 最终代码: 1 import java.util.*; 2 import java.math.*; 3 public class Main { 4
阅读全文
摘要:1 package noj_skiing; 2 3 import java.util.*; 4 import java.math.*; 5 6 public class Main { 7 8 public static void main(String[] args) { 9 Solution s
阅读全文
摘要:1 import java.util.*; 2 import java.math.*; 3 public class Main { 4 5 public static void main(String[] args) { 6 7 Solution s = new Solution(); 8 Scan
阅读全文
摘要:1 import java.util.*; 2 import java.math.*; 3 4 public class Main { 5 6 public static void main(String[] args) { 7 Solution s = new Solution(); 8 Scan
阅读全文
摘要:import java.util.*; import java.math.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int aPos = s
阅读全文