算法练习,链表二分最大n个
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个的更多相关文章
- 图解堆算法、链表、栈与队列(Mark)
原文地址: 图解堆算法.链表.栈与队列(多图预警) 堆(heap),是一类特殊的数据结构的统称.它通常被看作一棵树的数组对象.在队列中,调度程序反复提取队列中的第一个作业并运行,因为实际情况中某些时间 ...
- Python 迭代器&生成器,装饰器,递归,算法基础:二分查找、二维数组转换,正则表达式,作业:计算器开发
本节大纲 迭代器&生成器 装饰器 基本装饰器 多参数装饰器 递归 算法基础:二分查找.二维数组转换 正则表达式 常用模块学习 作业:计算器开发 实现加减乘除及拓号优先级解析 用户输入 1 - ...
- 算法基础~链表~排序链表的合并(k条)
算法基础~链表~排序链表的合并(k条) 1,题意:已知k个已排序链表头结点指针,将这k个链表合并,合并后仍然为有序的,返回合并后的头结点. 2,方法之间时间复杂度的比较: 方法1(借助工具vector ...
- Java数据结构和算法之链表
三.链表 链结点 在链表中,每个数据项都被包含在‘点“中,一个点是某个类的对象,这个类可认叫做LINK.因为一个链表中有许多类似的链结点,所以有必要用一个不同于链表的类来表达链结点.每个LINK对象中 ...
- [ACM_图论] The Perfect Stall 完美的牛栏(匈牙利算法、最大二分匹配)
描述 农夫约翰上个星期刚刚建好了他的新牛棚,他使用了最新的挤奶技术.不幸的是,由于工程问题,每个牛栏都不一样.第一个星期,农夫约翰随便地让奶牛们进入牛栏,但是问题很快地显露出来:每头奶牛都只愿意在她们 ...
- 算法:时间复杂度+二分查找法(Java/Go/Python)实现
导读 曾几何时学好数据结构与算法是我们从事计算机相关工作的基本前提,然而现在很多程序员从事的工作都是在用高级程序设计语言(如Java)开发业务代码,久而久之,对于数据结构和算法就变得有些陌生了,由于长 ...
- 算法练习LeetCode初级算法之链表
删除链表中的节点 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode ne ...
- C# 算法之链表、双向链表以及正向反向遍历实现
1.简介 链表是一种非常基础的数据结构之一,我们在日常开发种都会接触到或者是接触到相同类型的链表数据结构.所以本文会使用C#算法来实现一个简单的链表数据结构,并实现其中几个简单的api以供使用. 2. ...
- 常用算法1 - 快速排序 & 二分查找
1. 二分查找法: 二分查找法是对一组有序的数字中进行查找,传递相应的数据,进行比较查找到与原数据相同的数据,查找到了返回对应的数组下标,没有找到返回-1. 二分查找法要求数据为一组有序的序列(大到小 ...
随机推荐
- docker容器里面安装ssh
docker容器里面安装ssh https://blog.csdn.net/chengxuyuanyonghu/article/details/76619097
- HDOJ 2002 计算球体积
#include<cstdio> #define PI 3.1415927 int main() { double r; while (scanf_s("%lf", & ...
- 1125 Chain the Ropes (25 分)
1125 Chain the Ropes (25 分) Given some segments of rope, you are supposed to chain them into one rop ...
- Jmeter(三十八)Jmeter Question 之 ‘批量执行SQL语句’
知识使我们变得玩世不恭,智慧使我们变得冷酷无情,我们思考的太多,感知太少,除了机器,我们更需要人性,除了智慧,我们需要仁慈和善良. ------出自查理卓别林的演讲 前面有提到Jmeter使用JDBC ...
- [UE4]先报告后广播模式
解决客户端射击,在服务器端和其他客户端看不到的问题. 一.把要广播的操作封装成一个事件(函数不支持网络属性),选择“多路传送” 二.创建一个事件,选择“在服务器上运行” 总结:从客户端执行的事件报告到 ...
- AndroidStudio快捷键使用记录
输入logt+回车 自动增加Tag的定义. private static final String TAG = "MainActivity"; 输入logd+回车 自动增加d级别的 ...
- WebSocket 启用压缩
m_client.Compression = CompressionMethod.Deflate;
- USACO 2008 Running(贝茜的晨练)
[题解] 动态规划,dp[i][j]表示第i分钟疲劳度为j的最长距离. [代码] #include <iostream> #include <cstdlib> #include ...
- java运行原理剖析
java是一种编译型语言,我们开发好的代码是不能够直接运行的,需要我们程序员进行编译之后,将字节点文件载入jvm虚拟之后,才可以运行操作 其原理是 java源代码-------编译-------> ...
- 第2章 GNS3和PacketTracer网络模拟器(2)_搭建GNS3实验环境
2. GNS3实验环境 2.1 教学实验1:配置路由器和VPCS (1)配置VPCS虚拟电脑的IP地址命令 //配置VPCS电脑的IP地址等信息 PC1> ? //查看可用的命令 PC1> ...