
algorithm
杜鲁门
keep moving
展开
-
【算法】给定一个数组,除了一个数出现1次之外,其余数都出现3次,输出出现一次的那个数。
给定一个数组,除了一个数出现1次之外,其余数都出现3次。找出出现一次的数。如:{1, 2, 1, 2, 1, 2, 7},找出7.格式:第一行输入一个数n,代表数组的长度,接下来一行输入数组A[n],(输入的数组必须满足问题描述的要求),最后输出只出现一次的数。package yn;import java.util.Scanner;public class OutputMin { public原创 2016-09-23 13:44:37 · 8368 阅读 · 4 评论 -
[算法]将一个正整数拆分成若干个正整数的和,输出所有的结果不重复
推荐先看我的一篇介绍Set去重的博文地址是 http://blog.youkuaiyun.com/bug_moving 看了这个之后,再来看下面的程序基本就能看懂了题目我也不太记得,因为是朋友给我口述的,然后给了我一个截图,看了图片大致也能知道题目要我们做什么 package yn;import java.util.ArrayList;import java.util.Collections;impo原创 2016-09-26 09:22:01 · 13726 阅读 · 1 评论 -
【算法】Java单链表逆转
单链表逆转置的递归与非递归方式Node类public class ListNode { int val; ListNode next; ListNode(int x) { val = x; }}先看递归求解:public ListNode reverse1(ListNode head) { // 当为空或者本节点为末尾节点的时候原创 2016-10-06 13:25:03 · 4508 阅读 · 1 评论 -
Java单链表实现快速排序
普通快排的思路选择1个结点为中心点,保证中心点左边比中心点小,中心点右边比中心点大即可。这就是一次快排,确定一个数的正确位置,然后进行递归。单链表的实现为使第一个节点为中心点创建2个指针(p,q),p指向头结点,q指向p的下一个节点q开始遍历,如果发现q的值比中心点的值小,则此时p=p->next,并且执行当前p的值和q的值交换,q遍历到链表尾即可把头结点的值和p的值执行交换。此时p节点为中原创 2017-02-23 18:08:59 · 5846 阅读 · 0 评论 -
Java单链表归并排序
概念归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,归并排序将两个已排序的表合并成一个表。归并排序基本原理通过对若干个有序结点序列的归并来实现排序。 所谓归并是指将若干个已排好序的部分合并成一个有序的部分。单链表实现归并排序找到中间点拆分链表//找到中间点,然后分割 public ListNode getMid原创 2017-02-24 08:53:59 · 4968 阅读 · 1 评论 -
2017阿里算法编程题--数组分片问题
对于一个长度为N的整型数组A, 数组里所有的数都是正整数,对于两个满足0<=X <= Y <N的整数,A[X], A[X+1] … A[Y]构成A的一个切片,记作(X, Y)。 用三个下标 m1, m2, m3下标满足条件0 < m1, m1 + 1 < m2, m2 +1 < m3 < N – 1。 可以把这个整型数组分成(0, m1-1), (m1+1, m2-1), (m2+1, m3-原创 2017-03-07 12:12:31 · 2538 阅读 · 7 评论