- 博客(16)
- 收藏
- 关注
原创 [leetcode-299]Bulls and Cows(java)
问题描述:这里写链接内容问题分析:这道题看起来很唬人,其实就是遍历两个字符串,看在某个位置是否相等,如果相等,就A++;如果不相等,就把secret中的字符和guess中的字符再分别存起来;然后再遍历第二遍,第二遍的遍历就是,经过处理的guess字符,会不会在经过处理的secrets的字符里面。如果在,就B++,表明只是放错了位置而已。public class Solution { publ
2015-10-31 10:48:27 2580
原创 [leetcode-297]Serialize and Deserialize Binary Tree(java)
问题描述:这里写链接内容 这道题思路毕竟简单,就是定义一套规则,一套序列化成字符串,然后再反序列化的规则。我的思路很简单:序列化过程中,采用广搜的思路,在对每一层而言,如果该节点为null,那么在字符串中添加一个‘#’,如果不为null,就添加一个该数,其中每个节点都以,为分割。反序列化时,首先调用split函数,将字符串解析成字符串数组,然后对数组进行遍历,获取每个数组元素,如果为“#”时,将n
2015-10-30 21:27:52 1720
原创 [leetcode-295]Find Median from Data Stream(java)
问题描述:这里写链接内容分析:这道题比较简单,重点在于如何高效插入数据。这里采用的是二分法,相当于插入排序。代码如下:class MedianFinder { List<Integer> numlist = new ArrayList<>(); // Adds a number into the data structure. public void addNum(int
2015-10-19 19:12:00 1000
原创 向量旋转算法
最近看《编程珠玑》,里面提到了一个常见的向量旋转问题,是指将一个数按照某点前后置换,比如【1,2,3,4,5,6,7,8,9,10】按照4旋转后,就变成了【5,6,7,8,9,10,1,2,3,4】。之前在leetcode上也看到了这个问题,当时觉得很简单,就是把前i个数存起来,然后将后面的数据向前移动,然后在把存起来的前i个数加在后面。《编程珠玑》上提到了两种算法,非常高效,时间复杂度为O(n),
2015-10-15 20:54:24 786
原创 解决PHP上传文件中文乱码问题
问题描述:项目组在使用WSS(White Shark System)官方网站过程中,发现当上传中文文档时,在点击下载时无法下载(显示404NotFound),从显示的URI上可以很明显的看出是由于乱码。具体信息描述: 服务器:centos+apache+php+mysql 客户端:Windows解决过程:由于我在本机上也搭载着一套WSS系统,我尝试了文件上传,没有任何问题。所以我猜想是由于win
2015-10-15 20:23:20 3641
原创 [leetcode-45]Jump Game II(java)
问题描述:https://leetcode.com/problems/jump-game-ii/分析:这道题最开始使用DP算法,发现TLE,然后归纳代码发现,没有必要分配额外的空间,而只需要保留一个空间的左边界和右边界即可。当这个右边界小于target时,从左边界遍历到右边界,查看这一轮里面右边界最多延伸到什么地方?当然,如果新的右边界小于等于原来的右边界,那么jump game就困死在了这一轮,反
2015-10-13 16:24:45 888
原创 [leetcode-44]Wildcard Matching(java)
问题描述:https://leetcode.com/problems/wildcard-matching/分析:这道题之前做过,再做发现还是没想到这个思路。最开始的思路还是使用回溯法,但是会发生超时。 我们再来仔细分析一下这样的结构。 p : abcd*def* ass*sss。这样的匹配实际上就是要查找字符串s中是否有如下按照一定顺序的序列:abcd、def、ass和sss。只有这四个字符串按
2015-10-13 15:18:03 1906
原创 [leetcode-292]Nim Game(java)
问题描述: You are playing the following Nim Game with your friend: There is a heap of stones on the table, each time one of you take turns to remove 1 to 3 stones. The one who removes the last stone will
2015-10-13 14:46:56 1930 1
原创 关于边界对齐的问题
边界对齐是什么?就是某种数据类型的存储地址有一定要求。对于计算机而言,理论上每个字节都可以用来存储数据,但是有些CPU或者由于什么其他原因,它们在读取数据时是按照对齐的方式来读取的。比如说,对于int型而言,intel默认是按照4字节的对齐要求来读取的。这样的读取可以在一个周期内完成。而如果不是这样的,那么可能需要2个周期或者更多时间来完成一个数据的读取。这也就解释了为啥需要边界对齐。但是我们在写C
2015-10-12 10:37:44 9560
原创 多次flose(fp)会怎样?
能不能多次对同一个文件描述符调用fclose?答案是不行的。为啥不行,我们需要看看fclose到底干了什么fclose关闭的是一个文件流,当调用fclose时,将会使用户态(C库)缓冲区中的数据刷新到内核区域(或通过socket发送,或者仅仅写回硬盘)。 于此同时,fclose会调用free来释放fp所指向的用户态buffer。因此,如果多次调用fclose,会多次调用free来释放一块已经被释放
2015-10-12 09:52:28 2830
原创 直方图内最大矩形
问题描述: 有一个直方图,用一个整数数组表示,其中每列的宽度为1,求所给直方图包含的最大矩形面积。比如,对于直方图[2,7,9,4],它所包含的最大矩形的面积为14(即[7,9]包涵的7x2的矩形)。 给定一个直方图A及它的总宽度n,请返回最大矩形面积。保证直方图宽度小于等于500。保证结果在int范围内。 测试样例: [2,7,9,4,1],5 返回:14分析:这里我们维护一个堆栈,当栈
2015-10-07 22:38:40 1585
原创 棋子翻转
问题描述: 在4x4的棋盘上摆满了黑白棋子,黑白两色的位置和数目随机其中左上角坐标为(1,1),右下角坐标为(4,4),现在依次有一些翻转操作,要对一些给定支点坐标为中心的上下左右四个棋子的颜色进行翻转,请计算出翻转后的棋盘颜色。 给定两个数组A和f,分别为初始棋盘和翻转位置。其中翻转位置共有3个。请返回翻转后的棋盘。 测试样例: [[0,0,1,1],[1,0,1,0],[0,1,1,0]
2015-10-07 22:17:10 2059
原创 最大差值
问题描述: 有一个长为n的数组A,求满足0≤a≤bimport java.util.*;public class LongestDistance { public int getDis(int[] A, int n) { // write code here int min = 0; int leftVal = A[0]; f
2015-10-07 22:10:49 685
原创 [leetcode-290]Word Pattern(java)
问题描述:https://leetcode.com/problems/word-pattern/分析:这道题比较简单,维护一个hash表,key为pattern中的字符,value为被切割的字符串。代码如下:3mspublic class Solution { public boolean wordPattern(String pattern, String str) { c
2015-10-06 10:39:37 2136 1
原创 [leetcode-289]Game of Life(java)
问题描述:分析:这道题起初自己搞复杂了,我原先以为是求最后的稳态,即一个状态再跳转到另外一个状态时,两个矩阵是一样的。但是有个测试用例是: 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 这个测试用例会发现该初始值根本就没有稳态,这才注意到是求的下一个状态。然后这个题的难点就在于了如何在in-place里面存储改变后的值?(特别是fol
2015-10-04 11:22:25 2110
原创 [leetcode-287]Find the Duplicate Number(java)
问题描述: Given an array nums containing n + 1 integers where each integer is between 1 and n (inclusive), prove that at least one duplicate number must exist. Assume that there is only one duplicate numb
2015-10-03 10:57:41 1052
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人