import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet; public class BinarySearch {
public static void main(String[] args) {
int[] a = { 11, 27, 28, 33 };
// System.out.println(findFirstRepeat("qywyer23tdd", 11));
// ListNode head = LinkedListReverse.initialList();
// LinkedListReverse.printList(insertionSortList(head));[4,5,1,6,2,7,3,8],10
GetLeastNumbers_Solution(new int[] { 4, 5, 1, 6, 2, 7, 3, 8 }, 10);
} public static ArrayList<Integer> GetLeastNumbers_Solution(int[] input, int k) {
ArrayList<Integer> list = new ArrayList<Integer>();
int cnt = 0;
if (k > input.length || k == 0) {
return list;
}
while (cnt < k) {
list.add(input[cnt]);
cnt++;
}
Collections.sort(list); for (int i = k; i < input.length; i++) {
int num = input[i];
// 如果超出最大,则不用管,如果没有超出最大,则需要加入并踢出最大
if (num < list.get(k - 1)) {
list.remove(k - 1);
list.add(num);
Collections.sort(list);
}
}
System.out.println(list);
return null;
} /**
* 插入排序 head 1 -> 7 -> 2 -> 6 -> 9 1 -> 2 -> 6 -> 7 -> 9
*/
public static ListNode insertionSortList(ListNode head) {
ListNode pstart = head;
ListNode pcurr = head.next;
if (pstart == null) {
return null;
}
// //1 7 2 6 9 3 在7后面插入888
// do {
// int currVal = pstart.val;
// if (currVal == 7) {
// ListNode newNode = new ListNode(888, null);
// newNode.setNext(pstart.next);
// pstart.setNext(newNode);
// }
// } while ((pstart = pstart.next) != null); // 1 7 2 6 9 3 在7前面插入888
do {
int currVal = pcurr.val;
if (currVal == 7) {
ListNode newNode = new ListNode(888, null);
newNode.setNext(pcurr);
pstart.setNext(newNode);
}
} while ((pcurr = pcurr.next) != null);
return head;
} public static char findFirstRepeat(String A, int n) {
HashSet<Character> hs = new HashSet<Character>();
for (char c : A.toCharArray()) {
if (hs.contains(c)) {
return c;
} else {
hs.add(c);
}
}
return ' ';
} public static int getPos(int[] A, int n, int val) {
int start = 0;
int end = n - 1;
int mid = (end - start) / 2;
while (start < end) {
if (A[mid] == val) {
return mid;
} else if (A[mid] > val) {
end = mid;
} else if (A[mid] < val) {
start = mid;
}
mid = start + (end - start) / 2;
}
return 0;
}
}

算法练习,链表二分最大n个的更多相关文章

  1. 图解堆算法、链表、栈与队列(Mark)

    原文地址: 图解堆算法.链表.栈与队列(多图预警) 堆(heap),是一类特殊的数据结构的统称.它通常被看作一棵树的数组对象.在队列中,调度程序反复提取队列中的第一个作业并运行,因为实际情况中某些时间 ...

  2. Python 迭代器&生成器,装饰器,递归,算法基础:二分查找、二维数组转换,正则表达式,作业:计算器开发

    本节大纲 迭代器&生成器 装饰器  基本装饰器 多参数装饰器 递归 算法基础:二分查找.二维数组转换 正则表达式 常用模块学习 作业:计算器开发 实现加减乘除及拓号优先级解析 用户输入 1 - ...

  3. 算法基础~链表~排序链表的合并(k条)

    算法基础~链表~排序链表的合并(k条) 1,题意:已知k个已排序链表头结点指针,将这k个链表合并,合并后仍然为有序的,返回合并后的头结点. 2,方法之间时间复杂度的比较: 方法1(借助工具vector ...

  4. Java数据结构和算法之链表

    三.链表 链结点 在链表中,每个数据项都被包含在‘点“中,一个点是某个类的对象,这个类可认叫做LINK.因为一个链表中有许多类似的链结点,所以有必要用一个不同于链表的类来表达链结点.每个LINK对象中 ...

  5. [ACM_图论] The Perfect Stall 完美的牛栏(匈牙利算法、最大二分匹配)

    描述 农夫约翰上个星期刚刚建好了他的新牛棚,他使用了最新的挤奶技术.不幸的是,由于工程问题,每个牛栏都不一样.第一个星期,农夫约翰随便地让奶牛们进入牛栏,但是问题很快地显露出来:每头奶牛都只愿意在她们 ...

  6. 算法:时间复杂度+二分查找法(Java/Go/Python)实现

    导读 曾几何时学好数据结构与算法是我们从事计算机相关工作的基本前提,然而现在很多程序员从事的工作都是在用高级程序设计语言(如Java)开发业务代码,久而久之,对于数据结构和算法就变得有些陌生了,由于长 ...

  7. 算法练习LeetCode初级算法之链表

    删除链表中的节点 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode ne ...

  8. C# 算法之链表、双向链表以及正向反向遍历实现

    1.简介 链表是一种非常基础的数据结构之一,我们在日常开发种都会接触到或者是接触到相同类型的链表数据结构.所以本文会使用C#算法来实现一个简单的链表数据结构,并实现其中几个简单的api以供使用. 2. ...

  9. 常用算法1 - 快速排序 & 二分查找

    1. 二分查找法: 二分查找法是对一组有序的数字中进行查找,传递相应的数据,进行比较查找到与原数据相同的数据,查找到了返回对应的数组下标,没有找到返回-1. 二分查找法要求数据为一组有序的序列(大到小 ...

随机推荐

  1. Abp IRepository 方法解释(1)

    //    // 摘要:    //     This interface is implemented by all repositories to ensure implementation of ...

  2. Postgres安装

    yum install zlib-devel gcc make #创建用户和组groupadd postgresuseradd -g postgres postgres mkdir -p /usr/l ...

  3. Python函数式编程-高阶函数、匿名函数、装饰器、偏函数

  4. Java基础知识_毕向东_Java基础视频教程笔记(26 反射)

    Java反射机制: 是在运行状态中,对于任意一个类(class)文件,都能够知道这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性.这种动态获取的信息以及动态调用对象的方法的功 ...

  5. delphi中Application.MessageBox函数用法详解

    delphi中Application.MessageBox函数用法详解 Application.MessageBox是TApplication的成员函数,声明如下:functionTApplicati ...

  6. WordPress版微信小程序1.5版本发布

    这个周末对WordPress版微信小程序进行了小版本的升级,第一个版本做得比较粗糙,性能上也有些差.本次升级主要调整和优化功能包括: 1.在主页面,加入浮动按钮,用来打开侧滑导航菜单. 2.增加侧滑导 ...

  7. system 系统调用、gcc编译过程

    system 库函数的功能是执行操作系统的命令或者运行指定的程序 #include <stdio.h> #include <stdlib.h>//引入库 int main() ...

  8. android 相对布局例子代码

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  9. [Unity插件]Lua行为树(六):打印树结构

    经过前面的文章,已经把行为树中的四种基本类型节点介绍了下.接下来可以整理一下,打印一下整棵行为树.注意点如下: 1.可以把BTBehaviorTree也当作一种节点,这样就可以方便地进行行为树嵌套了 ...

  10. mysql大纲

    一.概述 1.1 关系型数据.非关系型数据.半关系型数据 1.2 关系型数据库和非关系型数据库 1.3 发展史 二.MySQL组件和安装 三.数据库语言和主要概念 3.1 数据库语言 DML.DDL. ...