自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Rain

I have a dream!An AC deram!! orz orz orz orz

  • 博客(425)
  • 收藏
  • 关注

转载 MySQL中的锁(表锁、行锁)

锁是计算机协调多个进程或纯线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所在有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。 概述    相对其他数据库而言,MySQL的锁机制比较

2018-02-01 21:26:40 544

原创 JAVA多线程学习--哲学家就餐问题

哲学家就餐问题是1965年由Dijkstra提出的一种线程同步的问题。问题描述:一圆桌前坐着5位哲学家,两个人中间有一只筷子,桌子中央有面条。哲学家思考问题,当饿了的时候拿起左右两只筷子吃饭,必须拿到两只筷子才能吃饭。上述问题会产生死锁的情况,当5个哲学家都拿起自己右手边的筷子,准备拿左手边的筷子时产生死锁现象。解决办法:  1、添加一个服务生,只有当经过服务生同意之后才能拿筷子,服务

2018-01-25 17:32:21 712

原创 [剑指Offer]最小的K个数

/*思路:o(n)的算法,只有当可以更改输入的数组时候才可用从数组中次数超过一半的数字得到启发。就是用快速排序的思想,找到第K大的数,那么左边都是比它小的数了*/class Solution {public: vector GetLeastNumbers_Solution(vector input, int k) { int start=0, end=input.size(

2018-01-21 21:04:53 534

原创 [剑指Offer]数组中出现次数超过一半的数字

/*思路:数字中有一个数组出现的次数超过数组长度的一半,也就是说它出现的次数比其他所有数字出现次数的和还要多。因此我们可以考虑在遍历数组的时候保存两个值:一个是数组中的一个数字,一个是次数。当我们遍历到下一个数字的时候,如果下一个数字和我们之前保存的数字相同,则次数加1如果下一个数字和之前保存的数字不用,则次数减1.如果次数为0,我们需要保存下一个数字,并把次数设为1.由于我们要找的

2018-01-21 21:04:16 432

原创 [剑指Offer]二维数组中的查找

题目描述在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。方法一:直接一跳一跳的查找即可,我没想到public class Solution { public boolean Find(int target, int [][] array) { int len=ar

2018-01-21 21:03:25 404

原创 [LeetCode386]Lexicographical Numbers(n以内的数字按字典序输出)

Given an integer n, return 1 - n in lexicographical order.For example, given 13, return: [1,10,11,12,13,2,3,4,5,6,7,8,9].Please optimize your algorithm to use less time and space. The input si

2018-01-20 20:59:46 674 1

原创 [LeetCode41]找到一段连续正整数中丢失的数

class Solution {public: int firstMissingPositive(vector& nums) { int len=num.size(); if(len==0) return 1; for(int i=0; i<len; i++) { if(nums[i]>0&&nums[i]<=len&&nums[nums[i]-1]!=

2018-01-20 20:29:17 365

原创 [LeetCode148]Sort List(对链表排序)

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */思路:归并排序,因为是链表,所有核心是如何找到链表的中间位置,解法是快慢指针的技巧

2018-01-20 20:11:45 374

原创 [LeetCode147]Insertion Sort List(链表插入排序)

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* in

2018-01-20 19:10:30 337

原创 [LeetCode23]Merge k Sorted Lists(合并k个有序链表)

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */思路:借鉴归并排序的思想,针对这个lists进行排序假设总共有k个list,每个

2018-01-20 19:09:31 367

原创 [LeetCode21]Merge Two Sorted Lists(合并两个有序链表)

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */思路:从头开始,分别比较两个链表的每个元素。较小元素放前面,然后一次往后走cla

2018-01-20 19:08:33 327

原创 [LeetCode]Merge Sorted Array(合并两个有序的数组)

思路:从后往前比,然后处理剩下的元素。因为不允许使用多余的数组空间,就不好对两个数组从前往后进行比较(插入位置比较麻烦)class Solution {public: void merge(vector& nums1, int m, vector& nums2, int n) { while(m>0&&n>0) { if(nums1[m-1]>nums2[n

2018-01-20 19:06:42 403

原创 [剑指offer]删除链表中重复的结点

/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/题解:class Solution {public: ListNode* deleteDuplication(ListNode* pHead

2018-01-20 16:07:02 363

原创 [剑指offer]二叉搜索树转链表

/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: TreeNode* Convert(TreeNode*

2018-01-20 14:39:31 588

原创 [剑指offer]链表中环的入口结点

假设x为环前面的路程(黑色路程),a为环入口到相遇点的路程(蓝色路程,假设顺时针走), c为环的长度(蓝色+橙色路程)当快慢指针相遇的时候:此时慢指针走的路程为Sslow = x + m * c + a快指针走的路程为Sfast = x + n * c + a2 Sslow = Sfast2 * ( x + m*c + a ) = (x + n *c + a)从

2018-01-20 14:38:18 439

原创 [LeetCode]Flatten Binary Tree to Linked List(二叉树转链表)

Given a binary tree, flatten it to a linked list in-place.For example,Given 1 / \ 2 5 / \ \ 3 4 6The flattened tree should look like: 1 \ 2

2018-01-18 22:16:46 445

转载 Java 垃圾回收机制

摘要:  Java技术体系中所提倡的 自动内存管理 最终可以归结为自动化地解决了两个问题:给对象分配内存 以及 回收分配给对象的内存,而且这两个问题针对的内存区域就是Java内存模型中的 堆区。关于对象分配内存问题,笔者的博文《JVM 内存模型概述》已经阐述了 如何划分可用空间及其涉及到的线程安全问题,本文将结合垃圾回收策略进一步给出内存分配规则。垃圾回收机制的引入可以有效的防止内存泄

2018-01-03 14:28:20 359

原创 LeetCode 160. Intersection of Two Linked Lists(两个链表的第一个公共结点)

/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */public

2018-01-02 21:03:23 476

转载 Java 接口(interface)的用途和好处

一. 对接口的三个疑问很多初学者都大概清楚interface是1个什么, 我们可以定义1个接口, 然后在里面定义一两个常量(static final) 或抽象方法.然后以后写的类就可以实现这个接口, 重写里面的抽象方法. 很多人说接口通常跟多态性一起存在.接口的用法跟抽象类有点类似.但是为何要这么做呢.1.为什么不直接在类里面写对

2017-12-29 11:47:08 13279 12

转载 Java集合Set与HashSet

原文:点击1、Set接口的使用    Set集合里多个对象之间没有明显的顺序。具体详细方法请参考API文档(可见身边随时带上API文档有多重要),基本与Collection方法相同。只是行为不同(Set不允许包含重复元素)。      Set集合不允许重复元素,是因为Set判断两个对象相同不是使用==运算符,而是根据equals方法。即两个对象用equals方法比较返回

2017-12-28 14:19:29 527

转载 Linux进程间的通信方式和原理

进程的概念进程是操作系统的概念,每当我们执行一个程序时,对于操作系统来讲就创建了一个进程,在这个过程中,伴随着资源的分配和释放。可以认为进程是一个程序的一次执行过程。进程通信的概念进程用户空间是相互独立的,一般而言是不能相互访问的。但很多情况下进程间需要互相通信,来完成系统的某项功能。进程通过与内核及其它进程之间的互相通信来协调它们的行为。进程通信的应用场景

2017-12-27 18:43:47 398

原创 java中构造器(Constructor)

构造器是一个创建对象时被自动调用的特殊方法,为的是初始化。构造器的名称应与类的名称一致。       当创建一个个对象时,系统会该对象的属性默认初始化,基本类型属性的值为0(数值类型),false(布尔类型),把所有的引用类型设置为null.       构造器可以改变这种默认的初始化。       构造器的作用:是创建java对象的重要途径,是不是说构造器完全负责创建ja

2017-12-24 11:58:48 1115

原创 [LeetCode] Reverse Nodes in k-Group每k个一组翻转链表

Given a linked list, reverse the nodes of a linked list k at a time and return its modified list.If the number of nodes is not a multiple of k then left-out nodes in the end should remain as it is

2017-12-19 16:50:27 443

原创 链表中倒数第k个结点

思路一:两个指针,先让第一个指针和第二个指针都指向头结点,然后再让第一个指正走(k-1)步,到达第k个节点。然后两个指针同时往后移动,当第一个结点到达末尾的时候,第二个结点所在位置就是倒数第k个节点了。/*public class ListNode{ int val; ListNode next = null; ListNode(int val) {

2017-12-18 20:05:59 251

原创 反转链表

输入一个链表,反转链表后,输出链表的所有元素。C++:/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution{public: ListNode* ReverseList(ListNode* p

2017-12-18 19:21:15 216

原创 按之字形顺序打印二叉树

请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。题目链接:点击PS:也可以用两个栈来做这题import java.util.*;/*public class TreeNode { int val = 0; TreeNode left = null; TreeNo

2017-12-18 17:56:10 233

原创 阻塞非阻塞与同步异步的区别

作者:严肃链接:https://www.zhihu.com/question/19732473/answer/20851256来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。“阻塞”与"非阻塞"与"同步"与“异步"不能简单的从字面理解,提供一个从分布式系统角度的回答。1.同步与异步同步和异步关注的是消息通信机制 (synchrono

2017-12-14 15:36:17 266

转载 inline函数的定义放在头文件中

inline是加在实现上,就算加在声明上,编译器也会忽略掉。内联展开是在编译时进行的,只有链接的时候源文件之间才有关系。所以内联要想跨源文件必须把实现写在头文件里。如果一个inline函数会在多个源文件中被用到,那么必须把它定义在头文件中。注意:将函数的定义({…}之间的部分)放在头文件中是强制的,除非该函数仅仅被单个 .cpp 文件使用。尤其是,如果你将内联函数的定义放在 .cpp 文件

2017-12-12 20:22:13 3082

原创 [LintCode] Swap Two Nodes in Linked List 交换链表中的两个结点

Given a linked list and two values v1 and v2. Swap the two nodes in the linked list with values v1 and v2. It's guaranteed there is no duplicate values in the linked list. If v1 or v2 does not exist i

2017-12-09 21:42:35 309

原创 [LeetCode] Swap Nodes in Pairs(成对交换节点)

Given a linked list, swap every two adjacent nodes and return its head.For example,Given 1->2->3->4, you should return the list as 2->1->4->3.Your algorithm should use only constant space. Y

2017-12-09 19:45:55 376

转载 终端、shell、bash的区别联系

最佳答案终端,即所谓的命令行界面,又称命令终端,用户输入shell命令用的窗口,跟Windows里的DOS界面差不多。shell,Shell就是用户和操作系统之间的壳,中介,GUI和CLI都算是Shell,登陆终端可以是登陆了Bash也可能是Csh或者Dash;是操作系统与用户交互用的接口,在命令终端里可以使用shell。shell将用户输入翻译为操作系统能处理的指

2017-12-02 10:36:20 11412

原创 Java继承中的构造方法

1.子类的构造过程中必须调用基类的构造方法.2.子类可以在自己的构造方法中使用super(argument_list)调用基类的构造方法  使用this(argument_list)调用本类的另外的构造方法如果调用super,必须写在子类构造方法的第一行3.如果子类的构造方法中没用显示地调用基类的构造方法,则系统默认调用基类无参数的构造方法4.如果子类构造方法中既没有显式调

2017-11-30 19:46:35 328

原创 UVALive 7040 Color (容斥原理 + 组合数学递推公式 + 求逆元 + 基础数论)

搬运题解系列:http://blog.csdn.net/qingshui23/article/details/51125323传送门 英文题目:Recently, Mr. Big recieved n owers from his fans. He wants to recolor those owers with m colors. The owers are put

2017-10-25 18:25:03 462

原创 超级读写挂

#define FI(n) FastIO::read(n)namespace FastIO { const int SIZE = 1 << 16; char buf[SIZE], obuf[SIZE], str[60]; int bi = SIZE, bn = SIZE, opt; int read(char *s) { while (bn) { for (; bi < bn

2017-10-18 20:07:54 310

原创 Java大数类排序

import java.lang.reflect.Array;import java.math.BigDecimal;import java.math.BigInteger;import java.util.*;public class Main { public static void main(String[] args) { Scanner cin=new Scanner(

2017-10-16 14:41:04 1149

原创 Codeforces510E Fox And Dinner(最大流-奇偶建图+路径打印)

搬运大佬题解系列:http://blog.csdn.net/qwb492859377/article/details/49021453传送门:点击打开链接题意:n只狐狸,每个狐狸对应了一个数字,现在要把n只狐狸分成很多个圈坐着,每个圈中至少要有3只,且相邻两只狐狸对应的数字只和必须是质数思路:由于相加必须是质数。,且有对应的那个数字>=2,说明这

2017-10-09 15:11:14 427

原创 GYM100526 Interesting Integers(扩展欧几里得)

搬运大佬的题解系列:http://blog.csdn.net/u010568270/article/details/52315019题目链接:  http://codeforces.com/gym/100526  http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11672&courseid=0

2017-10-07 18:42:50 379

原创 UVALive 7147 World Cup(贪心+分类讨论)

大佬的讲解:http://www.cnblogs.com/qq2424260747/p/4905426.html题目大意:n个队伍参加比赛,有m个队伍晋级,n个队伍有n-1场比赛,每两个队伍之间都有一场比赛。一场比赛赢的得a分,输的得c分,平局得b分,问没有晋级的队伍最高分和晋级的队伍最低分分析:1.没有晋级的队伍最高分将队伍分为两堆,分别为m+1,n-m-1;

2017-10-04 20:00:51 312

原创 UVALive 7146 Defeat the Enemy (贪心)

题意:我方有n个人,敌方有m个人。每个人有攻击力a,防御力d。如果我方的人i攻击力比敌方的人j的防御力高,那么i可以杀死j,否则杀不死。当然,如果同时j的攻击力比i个防御力高,那么j同时会杀死i。但是,每个人只能打一次,无论存活下来还是死去。求我方在杀死所有敌人的情况下,最多可以留下多少人? 输入:首行一个整型t,表示共有t组数据。接下来,每组数据首行两个整型n,m,分

2017-10-04 19:59:03 466

原创 HDU4596Yet another end of the world(扩展欧几里得)

题意:给定一系列的虫洞,每个虫洞都有自己的x,y,z,当你的 id 对 x 取余后结果落在[ y,z ]区间内,则会被吸引,被两个或两个以上的虫洞吸引会有危险,求能否宇宙飞船能否起飞。分析:枚举每两个虫洞,有id - k1 * x1 = uid - k2 * x2 = v其中k1与k2分别为 id / x1 与 id / x2,u与v分别为求余后

2017-10-01 22:02:35 417

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除