<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[zll00561的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/zll00561</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; zll00561]]></copyright><item><title><![CDATA[DP-MinAbsSum]]></title><link>https://blog.youkuaiyun.com/zll00561/article/details/45957569</link><guid>https://blog.youkuaiyun.com/zll00561/article/details/45957569</guid><author>zll00561</author><pubDate>Sun, 24 May 2015 22:45:03 +0800</pubDate><description><![CDATA[给定一个数组N个正整数，给每个数一个符号，正或者负使得所有数的的和的绝对值尽可能大。也就是使得这个 
val(A, S) = |sum{ A[i]*S[i] for i = 0..N−1 }尽可能大s[i] = +1或者-1。 
通过分析可以发现元素的正负不影响结果，问题转化为将数分成两堆，两堆只差最小。首先将元素全部转成正数顺便做了个count sort. 发现这个问题转化为多重背包问题。 
DP]]></description><category></category></item><item><title><![CDATA[最大公约数(Gcd)两种算法(Euclid && Stein)转载]]></title><link>https://blog.youkuaiyun.com/zll00561/article/details/45504401</link><guid>https://blog.youkuaiyun.com/zll00561/article/details/45504401</guid><author>zll00561</author><pubDate>Tue, 05 May 2015 16:40:53 +0800</pubDate><description><![CDATA[写的不错，代码看起来很舒服。
欧几里德算法和扩展欧几里德算法 
欧几里德算法  
欧几里德算法又称辗转相除法，用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理：
定理：gcd(a,b) = gcd(b,a mod b)证明：a可以表示成a = kb + r，则r = a mod b  
假设d是a,b的一个公约数，则有  
d|a, d|b，而r = a - kb，因此d|r  
因此]]></description><category></category></item><item><title><![CDATA[9.1 ChocolatesByNumbers]]></title><link>https://blog.youkuaiyun.com/zll00561/article/details/45485879</link><guid>https://blog.youkuaiyun.com/zll00561/article/details/45485879</guid><author>zll00561</author><pubDate>Mon, 04 May 2015 20:54:51 +0800</pubDate><description><![CDATA[N块巧克力摆成一个环从0到N-1。首先吃No.0块，然后吃掉No.M块，依次吃掉No.2M….直到遇到空的块，求可以吃掉几块。 
求最小公倍数的问题。class Solution {
    public int solution(int N, int M) {
        // write your code in Java SE 8
        // x*M % N = y*M %N]]></description><category></category></item><item><title><![CDATA[cargo center]]></title><link>https://blog.youkuaiyun.com/zll00561/article/details/45477863</link><guid>https://blog.youkuaiyun.com/zll00561/article/details/45477863</guid><author>zll00561</author><pubDate>Mon, 04 May 2015 10:48:48 +0800</pubDate><description><![CDATA[将某城市划分为m*n个区域，每个区域货物量保存在二维数组。将每个区的货物送到一个cargo center，汽车只能上，下，左，右，四个方向移动。求center使所有货物运到这儿的cost最小。初中物理有道题，给你一块不均匀木板，如何找到它的重心。用一根绳吊起来，画一条垂直线，再换个地方吊起了画出垂直线。两线交叉的地方就是重心。 
这道题也是一样，先找出最小的列使所有点到这一列的cost最小。再找到行]]></description><category></category></item><item><title><![CDATA[8.3 Peaks]]></title><link>https://blog.youkuaiyun.com/zll00561/article/details/45399153</link><guid>https://blog.youkuaiyun.com/zll00561/article/details/45399153</guid><author>zll00561</author><pubDate>Thu, 30 Apr 2015 21:00:06 +0800</pubDate><description><![CDATA[A non-empty zero-indexed array A consisting of N integers is given.A peak is an array element which is larger than its neighbors. More precisely, it is an index P such that 0 < P < N − 1,  A[P − 1] < A]]></description><category></category></item><item><title><![CDATA[8.4 Flags]]></title><link>https://blog.youkuaiyun.com/zll00561/article/details/45396981</link><guid>https://blog.youkuaiyun.com/zll00561/article/details/45396981</guid><author>zll00561</author><pubDate>Thu, 30 Apr 2015 16:59:13 +0800</pubDate><description><![CDATA[// you can also use imports, for example: 
 import java.util.*;

// you can use System.out.println for debugging purposes, e.g. 
// System.out.println(“this is a debug message”);

class Solution {]]></description><category></category></item><item><title><![CDATA[7.3 MaxDoubleSliceSum]]></title><link>https://blog.youkuaiyun.com/zll00561/article/details/45227357</link><guid>https://blog.youkuaiyun.com/zll00561/article/details/45227357</guid><author>zll00561</author><pubDate>Thu, 23 Apr 2015 21:21:25 +0800</pubDate><description><![CDATA[求两相邻子数组和最大，两端是开区间。 
这道思索了很久，觉得解法没问题但是性能测试只有两个通过。 
有两个因素影响最大值，两端的边界及切分的位置。边界扫描的同时在段内调整slice位置保证maxL+maxR的和最大。策略是以右边界扫描为主，maxR+A[i-1]<0及A[slice]>A[i-1]时调整slice。 
但是为什么不对呢？？class Solution {
    public int]]></description><category></category></item><item><title><![CDATA[7.2 MaxSliceSum]]></title><link>https://blog.youkuaiyun.com/zll00561/article/details/45196151</link><guid>https://blog.youkuaiyun.com/zll00561/article/details/45196151</guid><author>zll00561</author><pubDate>Wed, 22 Apr 2015 15:49:40 +0800</pubDate><description><![CDATA[求连续最大和子数组。与例子中不同的是，如果和为负返回最大的数而不是0.Solutution当maxCur+A[i]<0时，maxCur不能设置为0，因为如果所有值都小于0，得到错误结果。在之前程序的基础上，增加分段最大值为负的判断。class Solution {
     public int solution(int[] A) {
        int maxSum = Integer.MIN]]></description><category></category></item><item><title><![CDATA[7.1 MaxProfit]]></title><link>https://blog.youkuaiyun.com/zll00561/article/details/45172059</link><guid>https://blog.youkuaiyun.com/zll00561/article/details/45172059</guid><author>zll00561</author><pubDate>Tue, 21 Apr 2015 16:28:23 +0800</pubDate><description><![CDATA[求股票最大收益。算法导论上的问题 
A zero-indexed array A consisting of N integers is given. It contains daily prices of a stock share for a period of N consecutive days. If a single share was bought on day P and sold]]></description><category></category></item><item><title><![CDATA[6.2 Dominator]]></title><link>https://blog.youkuaiyun.com/zll00561/article/details/45117215</link><guid>https://blog.youkuaiyun.com/zll00561/article/details/45117215</guid><author>zll00561</author><pubDate>Sat, 18 Apr 2015 22:13:28 +0800</pubDate><description><![CDATA[如果存在leader，返回其任意index，否则返回-1. 
A zero-indexed array A consisting of N integers is given. The dominator of array A is the value that occurs in more than half of the elements of A. 
For example, consider]]></description><category></category></item><item><title><![CDATA[4.4 StoneWall]]></title><link>https://blog.youkuaiyun.com/zll00561/article/details/45102317</link><guid>https://blog.youkuaiyun.com/zll00561/article/details/45102317</guid><author>zll00561</author><pubDate>Fri, 17 Apr 2015 21:24:56 +0800</pubDate><description><![CDATA[求一堵高低不平的墙，最少可以用多少块砖。砖可以是任意高度宽度的正方形。 
You are going to build a stone wall. The wall should be straight and N meters long, and its thickness should be constant; however, it should have different heights]]></description><category></category></item><item><title><![CDATA[5.1 Brackets]]></title><link>https://blog.youkuaiyun.com/zll00561/article/details/45075555</link><guid>https://blog.youkuaiyun.com/zll00561/article/details/45075555</guid><author>zll00561</author><pubDate>Thu, 16 Apr 2015 15:05:50 +0800</pubDate><description><![CDATA[(),[],{}配对的问题，使用stack的经典案例，不多说了。 
强烈吐槽java泛型就是一坨屎。我又想换C#了，单就语言来说C#明显比java友好多了，后发优势吧。前浪都死在沙滩上了。最近的趋势是函数式编程语言。JS，D语言都有浓重的函数式味道class Solution {
    public int solution(String S) {
        // write your co]]></description><category></category></item><item><title><![CDATA[5.3 Fish eat fish]]></title><link>https://blog.youkuaiyun.com/zll00561/article/details/45075193</link><guid>https://blog.youkuaiyun.com/zll00561/article/details/45075193</guid><author>zll00561</author><pubDate>Thu, 16 Apr 2015 14:44:33 +0800</pubDate><description><![CDATA[N voracious fish are moving along a river. Calculate how many fish are alive. 
You are given two non-empty zero-indexed arrays A and B consisting of N integers. Arrays A and B represent N voracious fis]]></description><category></category></item><item><title><![CDATA[5.2 Nesting]]></title><link>https://blog.youkuaiyun.com/zll00561/article/details/45070469</link><guid>https://blog.youkuaiyun.com/zll00561/article/details/45070469</guid><author>zll00561</author><pubDate>Thu, 16 Apr 2015 09:11:32 +0800</pubDate><description><![CDATA[Determine whether given string of parentheses is properly nested. 
需要注意空间复杂度为1，不能使用stack。 
A string S consisting of N characters is called properly nested if: 
S is empty; 
S has the form “(U)” where U]]></description><category></category></item><item><title><![CDATA[4.4 NumberOfDiscIntersections]]></title><link>https://blog.youkuaiyun.com/zll00561/article/details/45061521</link><guid>https://blog.youkuaiyun.com/zll00561/article/details/45061521</guid><author>zll00561</author><pubDate>Wed, 15 Apr 2015 16:42:11 +0800</pubDate><description><![CDATA[Compute intersections between sequence of discs. 
数组A[i]保存以i为圆点，A[i]为半径的圆。求多少对圆至少有一个共同点。 
Given an array A of N integers, we draw N discs in a 2D plane such that the I-th disc is centered on (0,I) and]]></description><category></category></item><item><title><![CDATA[4.2 Distinct]]></title><link>https://blog.youkuaiyun.com/zll00561/article/details/45044213</link><guid>https://blog.youkuaiyun.com/zll00561/article/details/45044213</guid><author>zll00561</author><pubDate>Tue, 14 Apr 2015 16:41:48 +0800</pubDate><description><![CDATA[找出数组中出现不同元素的个数。import java.util.*;
class Solution {
    public int solution(int[] A) {
        if(A.length==0) return 0;
        Arrays.sort(A);
        int size = 1;
        int former = 0;
        fo]]></description><category></category></item><item><title><![CDATA[4.1 MaxProductOfThree]]></title><link>https://blog.youkuaiyun.com/zll00561/article/details/45043993</link><guid>https://blog.youkuaiyun.com/zll00561/article/details/45043993</guid><author>zll00561</author><pubDate>Tue, 14 Apr 2015 16:31:37 +0800</pubDate><description><![CDATA[Maximize A[P] * A[Q] * A[R] for any triplet (P, Q, R). 
寻找数组A，三个数乘积的最大值。A non-empty zero-indexed array A consisting of N integers is given. The product of triplet (P, Q, R) equates to A[P] * A[Q] * A[R]]></description><category></category></item><item><title><![CDATA[3.3 MinAvgTwoSlice]]></title><link>https://blog.youkuaiyun.com/zll00561/article/details/45032931</link><guid>https://blog.youkuaiyun.com/zll00561/article/details/45032931</guid><author>zll00561</author><pubDate>Mon, 13 Apr 2015 22:06:30 +0800</pubDate><description><![CDATA[求数组最小平均数子序列起始位置 
A non-empty zero-indexed array A consisting of N integers is given. A pair of integers (P, Q), such that 0 ≤ P < Q < N, is called a slice of array A (notice that the slice contains at]]></description><category></category></item><item><title><![CDATA[3.2 CountDiv]]></title><link>https://blog.youkuaiyun.com/zll00561/article/details/44975049</link><guid>https://blog.youkuaiyun.com/zll00561/article/details/44975049</guid><author>zll00561</author><pubDate>Fri, 10 Apr 2015 09:31:43 +0800</pubDate><description><![CDATA[Write a function: 
class Solution { public int solution(int A, int B, int K); } 
that, given three integers A, B and K, returns the number of integers within the range [A..B] that are divisible by K, i]]></description><category></category></item><item><title><![CDATA[3.1 PassingCars]]></title><link>https://blog.youkuaiyun.com/zll00561/article/details/44965661</link><guid>https://blog.youkuaiyun.com/zll00561/article/details/44965661</guid><author>zll00561</author><pubDate>Thu, 09 Apr 2015 21:15:30 +0800</pubDate><description><![CDATA[A non-empty zero-indexed array A consisting of N integers is given. The consecutive elements of array A represent consecutive cars on a road. 
Array A contains only 0s and/or 1s: 
0 represents a car tr]]></description><category></category></item></channel></rss>