<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Ginsai的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Ginsai</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Ginsai]]></copyright><item><title><![CDATA[【LeetCode】Container With Most Water]]></title><link>https://blog.youkuaiyun.com/Ginsai/article/details/81273657</link><guid>https://blog.youkuaiyun.com/Ginsai/article/details/81273657</guid><author>Ginsai</author><pubDate>Sun, 29 Jul 2018 18:46:40 +0800</pubDate><description><![CDATA[题目描述：

Given n non-negative integers a1, a2, ..., an , where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). F...]]></description><category></category></item><item><title><![CDATA[【LeetCode】Search in Rotated Sorted Array]]></title><link>https://blog.youkuaiyun.com/Ginsai/article/details/81272001</link><guid>https://blog.youkuaiyun.com/Ginsai/article/details/81272001</guid><author>Ginsai</author><pubDate>Sun, 29 Jul 2018 16:19:13 +0800</pubDate><description><![CDATA[题目描述：

Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.

(i.e., [0,1,2,4,5,6,7] might become [4,5,6,7,0,1,2]).

You are given a target value to search. If...]]></description><category></category></item><item><title><![CDATA[【Java面经】非科班渣硕转行及求职分享]]></title><link>https://blog.youkuaiyun.com/Ginsai/article/details/78387711</link><guid>https://blog.youkuaiyun.com/Ginsai/article/details/78387711</guid><author>Ginsai</author><pubDate>Sun, 29 Oct 2017 20:39:29 +0800</pubDate><description><![CDATA[背景介绍

楼主某末流985渣硕一枚，磕盐不会，偶然接触了下编程，然后又稍微学了学Java，后面就走上了程序猿的道路，今年四月侥幸去菊厂实习了一波（虽然没学到东西）。
秋招拿了几个一般的offer（大佬们别见笑）：去哪儿、海康威视、招银网络科技，最后签约招银（四川人，想每天下班吃火锅）。
去年的时候比较迷茫，不知道自学到底需要准备什么，在牛客上看了很多面经，非常受益，今天也分享一下供参考。]]></description><category></category></item><item><title><![CDATA[纸牌博弈]]></title><link>https://blog.youkuaiyun.com/Ginsai/article/details/76752875</link><guid>https://blog.youkuaiyun.com/Ginsai/article/details/76752875</guid><author>Ginsai</author><pubDate>Sun, 06 Aug 2017 10:34:58 +0800</pubDate><description><![CDATA[题目：

有一个整型数组A，代表数值不同的纸牌排成一条线。玩家a和玩家b依次拿走每张纸牌，规定玩家a先拿，玩家B后拿，但是每个玩家每次只能拿走最左或最右的纸牌，玩家a和玩家b都绝顶聪明，他们总会采用最优策略。请返回最后获胜者的分数。

给定纸牌序列A及序列的大小n，请返回最后分数较高者得分数(相同则返回任意一个分数)。保证A中的元素均小于等于1000。且A的大小小于等于300。

测试]]></description><category></category></item><item><title><![CDATA[字符串交错组成]]></title><link>https://blog.youkuaiyun.com/Ginsai/article/details/76718778</link><guid>https://blog.youkuaiyun.com/Ginsai/article/details/76718778</guid><author>Ginsai</author><pubDate>Sat, 05 Aug 2017 14:50:00 +0800</pubDate><description><![CDATA[题目：

对于三个字符串A，B，C。我们称C由A和B交错组成当且仅当C包含且仅包含A，B中所有字符，且对应的顺序不改变。请编写一个高效算法，判断C串是否由A和B交错组成。

给定三个字符串A,B和C，及他们的长度。请返回一个bool值，代表C是否由A和B交错组成。保证三个串的长度均小于等于100。

思路：

状态转移方程：

判断i=0和j=0的情况，如果i等于0，则必须B和]]></description><category></category></item><item><title><![CDATA[数值的整数次方]]></title><link>https://blog.youkuaiyun.com/Ginsai/article/details/76168096</link><guid>https://blog.youkuaiyun.com/Ginsai/article/details/76168096</guid><author>Ginsai</author><pubDate>Thu, 27 Jul 2017 01:55:22 +0800</pubDate><description><![CDATA[题目：给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
思路：一看就能想到的方法是：使用循环，指数多少就循环乘多少次得出结果。
需要注意的是：1、底数为0且底数；2、由于底数是double类型，可能不能精确表示，所以可以判断（底数-0.0）的值是否>-0.000001或者考虑底数正负的情况。
一种相对好点的方法是：x为奇数时,a^]]></description><category></category></item><item><title><![CDATA[二进制中1的个数]]></title><link>https://blog.youkuaiyun.com/Ginsai/article/details/75949782</link><guid>https://blog.youkuaiyun.com/Ginsai/article/details/75949782</guid><author>Ginsai</author><pubDate>Mon, 24 Jul 2017 01:04:58 +0800</pubDate><description><![CDATA[题目：输入一个整数，输出该数二进制表示中1的个数。其中负数用补码表示。
解法1：
思路：1与该数相与，如果不为0，说明最末位上的数字为1。1左移一位，与该数相与，如果不为0，说明倒数第二位上的数字为1。将1继续左移与该数比较，统计1的个数。注意：不能让该数往右移的方式来与1比较，因为负数往右移，高位会补1，就会陷入死循环。
代码：
public class Solution {
    p]]></description><category></category></item><item><title><![CDATA[斐波那契数列]]></title><link>https://blog.youkuaiyun.com/Ginsai/article/details/75948037</link><guid>https://blog.youkuaiyun.com/Ginsai/article/details/75948037</guid><author>Ginsai</author><pubDate>Sun, 23 Jul 2017 20:30:13 +0800</pubDate><description><![CDATA[题目：大家都知道斐波那契数列，现在要求输入一个整数n，请你输出斐波那契数列的第n项。n
思路：使用递归，f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2)每次返回前两项之和。这种方法重复计算了值，效率很低，数字过大还可能栈溢出，可以使用动态规划来进行优化。使用循环可以极大提升时间效率。代码如下。
代码：递归，可以用动态规划优化
public class Solution {]]></description><category></category></item><item><title><![CDATA[旋转数组的最小数字]]></title><link>https://blog.youkuaiyun.com/Ginsai/article/details/75947819</link><guid>https://blog.youkuaiyun.com/Ginsai/article/details/75947819</guid><author>Ginsai</author><pubDate>Sun, 23 Jul 2017 20:00:19 +0800</pubDate><description><![CDATA[题目：把一个数组最开始的若干个元素搬到数组的末尾，我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转，输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转，该数组的最小值为1。
 NOTE：给出的所有元素都大于0，若数组大小为0，请返回0。
代码：

import java.util.ArrayList;
public class Soluti]]></description><category></category></item><item><title><![CDATA[用两个栈实现队列]]></title><link>https://blog.youkuaiyun.com/Ginsai/article/details/75758767</link><guid>https://blog.youkuaiyun.com/Ginsai/article/details/75758767</guid><author>Ginsai</author><pubDate>Sat, 22 Jul 2017 16:47:10 +0800</pubDate><description><![CDATA[题目：用两个栈来实现一个队列，完成队列的Push和Pop操作。
 队列中的元素为int类型。
代码：
import java.util.Stack;

public class Solution {
    Stack stack1 = new Stack();
    Stack stack2 = new Stack();
    
    public void push(int nod]]></description><category></category></item><item><title><![CDATA[重建二叉树]]></title><link>https://blog.youkuaiyun.com/Ginsai/article/details/75743073</link><guid>https://blog.youkuaiyun.com/Ginsai/article/details/75743073</guid><author>Ginsai</author><pubDate>Sat, 22 Jul 2017 16:14:33 +0800</pubDate><description><![CDATA[题目：输入某二叉树的前序遍历和中序遍历的结果，请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6}，则重建二叉树并返回。
代码：/**
 * Definition for binary tree
 * public class TreeNode {
 *     int va]]></description><category></category></item><item><title><![CDATA[从尾到头打印链表]]></title><link>https://blog.youkuaiyun.com/Ginsai/article/details/75213348</link><guid>https://blog.youkuaiyun.com/Ginsai/article/details/75213348</guid><author>Ginsai</author><pubDate>Mon, 17 Jul 2017 00:06:55 +0800</pubDate><description><![CDATA[题目：输入一个链表，从尾到头打印链表每个节点的值。
思路：将每个节点的值存入栈中，再依次出栈打印。也可以使用递归来解决。
代码如下：
/**
*    public class ListNode {
*        int val;
*        ListNode next = null;
*
*        ListNode(int val) {
*            this]]></description><category></category></item><item><title><![CDATA[替换空格]]></title><link>https://blog.youkuaiyun.com/Ginsai/article/details/75212943</link><guid>https://blog.youkuaiyun.com/Ginsai/article/details/75212943</guid><author>Ginsai</author><pubDate>Sun, 16 Jul 2017 23:01:28 +0800</pubDate><description><![CDATA[题目：请实现一个函数，将一个字符串中的空格替换成“%20”。例如，当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
思路：如果从字符串头部开始遍历，每个遇到一个空格，都需要变成“%20”，同时还需要把空格后的所有字符往后移动两位，复杂度太高。遍历旧数组两次，第一次找出空格的个数，确定新字符串的总长度。第二次从旧字符串的末尾往头部遍历，从新字符串的末尾]]></description><category></category></item><item><title><![CDATA[二维数组中的查找]]></title><link>https://blog.youkuaiyun.com/Ginsai/article/details/75212646</link><guid>https://blog.youkuaiyun.com/Ginsai/article/details/75212646</guid><author>Ginsai</author><pubDate>Sun, 16 Jul 2017 22:19:00 +0800</pubDate><description><![CDATA[二维数组中的查找]]></description><category></category></item><item><title><![CDATA[Java虚拟机类加载机制]]></title><link>https://blog.youkuaiyun.com/Ginsai/article/details/64493366</link><guid>https://blog.youkuaiyun.com/Ginsai/article/details/64493366</guid><author>Ginsai</author><pubDate>Tue, 21 Mar 2017 19:55:53 +0800</pubDate><description><![CDATA[一句话描述：虚拟机把描述类的数据从Class文件加载到内存，并对数据进行校验、转换解析和初始化，最终形成可以被虚拟机直接使用的Java类型。
类加载全过程：加载-验证-准备-解析-初始化
1、加载
    在加载过程中主要完成三件事：1、通过一个类的全限定名来获取定义此类的二进制字节流（由类加载器完成，可以自己定义类加载器加载非数组类，数组类由虚拟机直接创建）2、将这个字节流所代表的静态存储]]></description><category></category></item><item><title><![CDATA[Java虚拟机笔记]]></title><link>https://blog.youkuaiyun.com/Ginsai/article/details/60139331</link><guid>https://blog.youkuaiyun.com/Ginsai/article/details/60139331</guid><author>Ginsai</author><pubDate>Fri, 03 Mar 2017 14:08:52 +0800</pubDate><description><![CDATA[虚拟机的程序计数器，虚拟机栈和本地方法栈属于线程私有，随线程创建而创建，随线程结束而结束，这几个区域的内存分配和回收都具有确定性。因此虚拟机内存回收主要考虑堆区和方法区。
    1、引用计数算法：
    给对象中添加一个引用计数器，每当有一个地方引用它时，计数器值加1；引用失效时，计数器值就减1；任何时刻计数器为0的对象就是不可能再被使用的。（没有被使用，很难解决对象之间相互循环引用的问题]]></description><category></category></item><item><title><![CDATA[mybatis mapper问题]]></title><link>https://blog.youkuaiyun.com/Ginsai/article/details/53386698</link><guid>https://blog.youkuaiyun.com/Ginsai/article/details/53386698</guid><author>Ginsai</author><pubDate>Tue, 29 Nov 2016 00:55:14 +0800</pubDate><description><![CDATA[Caused by: java.lang.IllegalArgumentException: Mapped Statements collection already contains value for com.video;
Caused by: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Caus]]></description><category></category></item><item><title><![CDATA[2016.11.25笔记]]></title><link>https://blog.youkuaiyun.com/Ginsai/article/details/53337732</link><guid>https://blog.youkuaiyun.com/Ginsai/article/details/53337732</guid><author>Ginsai</author><pubDate>Fri, 25 Nov 2016 18:54:01 +0800</pubDate><description><![CDATA[一、递归：
递归四条基本法则：
1、基准情形。必须总要有某些基准情形，它无需递归就能解出。（即递归中用于跳出）
2、不断推进。对于那些需要递归求解的情形，每一次递归调用都必须要使状况朝向基准情形推进。
3、设计法则。假设所有的递归调用都能运行。
4、合成效益法则。在求解一个问题的同一实例时，切勿在不同的递归调用中做重复性的工作。
二、程序运行时间估算：
法则1：for循环
一个fo]]></description><category></category></item><item><title><![CDATA[今天开始写写博客，记录一下学习的感悟]]></title><link>https://blog.youkuaiyun.com/Ginsai/article/details/53337610</link><guid>https://blog.youkuaiyun.com/Ginsai/article/details/53337610</guid><author>Ginsai</author><pubDate>Fri, 25 Nov 2016 17:20:35 +0800</pubDate><description><![CDATA[以前一直没有写博客的习惯，学了东西就一股脑的记在脑子里，没有消化再吸收，时间一久就忘了。]]></description><category></category></item></channel></rss>