两数之和,数组中两个数和等于固定值A,这两个数的位置?
暴力法:
class Solution {
public int[] twoSum(int[] nums, int target) {
for(int i=0 ; i<nums.length; i++) {
for(int j=i+1 ; j<nums.length; j++){
if(nums[i]+nums[j] == target) {
return new int[]{ i, j };
}
}
}
throw new IllegalArgumentException("No two sum solution");
}
}
一致性哈希法
class Solution {
public int[] twoSum(int[] nums, int target) {
Map<Integer,Integer> map = new HashMap<>();
for(int i=0 ; i<nums.length; i++) {
int j = target-nums[i];
if(map.containsKey(j)) {
return new int[] {map.get(j),i};
}
map.put(nums[i],i);
}
throw new IllegalArgumentException("No two sum solution");
}
}
单链表反转
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
ListNode prev = null;
while(head!=null){
ListNode temp = head.next;
head.next = prev;
prev = head;
head = temp;
}
return prev;
}
}
二叉树广度遍历
深度用栈
广度用队列
https://blog.csdn.net/m_sdn/article/details/84864645
private static void bfs(TreeNode root) {
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while (!queue.isEmpty()) {
TreeNode peek = queue.poll();
System.out.println(peek.value + "\t");
if (peek.left != null) queue.offer(peek.left);
if (peek.right != null) queue.offer(peek.right);
}
}
private static void dfs(TreeNode root) {
Stack<TreeNode> stack = new Stack<>();
stack.push(root);
while (!stack.isEmpty()) {
TreeNode peek = stack.peek();
System.out.println(peek.value + "\t");
stack.pop();
if (peek.right != null) stack.push(peek.right);
if (peek.left != null) stack.push(peek.left);
}
}
Stack.peek()与Stack.pop()
peek():返回栈顶的值 ;不改变栈的值,查看栈顶的对象而不移除它。
pop():返回栈顶的值 ;会把栈顶的值删除。
poll与pop
poll:Queue(队列)的一个方法,获取并移除此队列的头,如果此队列为空,则返回null。
pop:Stack(栈)的方法,移除堆栈顶部的对象,并作为此函数的值返回该对象 。
裴波那契数列
第n个数值等于n-1 + n-2的数值和
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i=0;i<10;i++){
System.out.println(getfibonacci(i));
}
}
public static long getfibonacci(int n){
if(n==0){
return 0;
}else if(n==1){
return 1;
}else{
long fib[]=new long[n+1];
fib[0]=0;
fib[1]=1;
for(int i=2;i<=n;i++){
fib[i]=fib[i-1]+fib[i-2];
}
return fib[n];
}
反转链表
public static ListNode reverseList(ListNode head) {
//定义两个临时变量
ListNode prev = null; // 预返回变量
ListNode curr = head; // 正在处理移位指向的变量
while (curr != null) {
ListNode nextTemp = curr.next; // ABCD 临时变量指向BCD
curr.next = prev; // ABCD分为BCD和A 其中把A的指向指向到null变量 获取出A,下一次获取B+Anull= BA
prev = curr; // 预返回变量设置为Anull 下一次设置为 BAnull
curr = nextTemp; // 当前移位为BCD
}
return prev;
}
public static class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
public static void main(String[] args) {
ListNode head1 = new ListNode(1);
ListNode head2 = new ListNode(2);
ListNode head3 = new ListNode(3);
ListNode head4 = new ListNode(4);
ListNode head5 = new ListNode(5);
head4.next = head5;
head3.next = head4;
head2.next = head3;
head1.next = head2;
System.out.println(reverseList(head1));
}
分享到:
相关推荐
图像检测算法2图像检测算法2图像检测算法2图像检测算法2图像检测算法2图像检测算法2图像检测算法2图像检测算法2图像检测算法2图像检测算法2图像检测算法2图像检测算法2
最全最清晰的国密算法SM2、SM3、SM4算法标准规范。 SM1 为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。 SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于...
磁盘调度算法包括: 1.先来先服务算法 2.电梯(扫描)算法 3复制请求队列 4.最短路径优先算法
国密算法 SM2_SM3_SM4 C语言实现
C#国密加密算法SM2,SM3,SM4的一个实现案例,不涉及具体的算法剖析,在网络上关于这个加密算法的文档较少,切在跨语言加密解密上会存在一些问题,所以整理。
国密算法SM2,SM3,SM4的技术规范,官方文档.描述详细
算法算法算法算法算法算法算法算法算法算法算法算法算法算法算法算法算法算法算法算法算法算法算法算法
2、熟悉快速排序的并行算法 3、实现快速排序的并行算法 3.2 实验环境及软件 单台或联网的多台PC机,Linux操作系统,MPI系统。 3.3实验内容 1、快速排序的基本思想 2、单处理机上快速排序算法 3、快速排序算法的...
国密算法功能 1. SM2 加密解密、公钥私钥生成、签名与验签; 2. SM4 加密解密; 3. SM3加密 4. 代码实现、调用案例源码 代码经过本人测试通过,调用BouncyCastle.Crypto.dll的全部实现代码,源码分享。
漫画算法系列-2020.11.25(B).pdf
1.1 进化类算法 2 1.2 群智能算法 3 1.3 模拟退火算法 5 1.4 禁忌搜索算法 5 1.5 神经网络算法 6 参考文献 6 第2章 遗传算法 9 2.1 引言 9 2.2 遗传算法理论 10 2.2.1 遗传算法的生物学基础 10 ...
“第2篇算法基本应用篇”详细讲解了算法在排序、查找、数值计算、数论、经典趣题和游戏中的应用;“第3篇算法高级应用篇”讲解了算法的一些高级应用技术,包括在密码学和数据压缩/解压缩中的应用。 《C/C++常用算法...
SM3withSM2数字签名算法的实现 SHA1WithSM2数字签名算法的实现 SHA256WithSM2数字签名算法的实现 SM3withRSA数字签名算法的实现 密钥协商功能 国密SM2 ECDHE密钥协商算法的实现 摘要算法 SM3摘要算法的实现 X509...
贝叶斯网络学习算法――k2算法,对于学习数据挖掘的人有用的,涉及到了分类预测算法
2. 掌握以上算法生成直线段的基本过程; 3. 通过编程,会在C/C++环境下完成用DDA算法、中点bresenham算法及bresenham算法对任意直线段的扫描转换。 实验设备及实验环境 计算机(每人一台) VC++6.0或其他C/C++语言...
排序算法2.doc排序算法2.doc排序算法2.doc排序算法2.doc排序算法2.doc排序算法2.doc排序算法2.doc排序算法2.doc排序算法2.doc排序算法2.doc排序算法2.doc排序算法2.doc排序算法2.doc
动态规划,分治算法,概率算法,模拟退火算法,搜索算法,贪婪算法,网上matlab,遗传算法,组合算法.
算法算法算法算法算法算法算法算法算法算法算法算法算法算法算法算法算法算法算法算法
LFU算法LFU算法LFU算法LFU算法LFU算法
基于c++语言的聚类算法实现,1.k-means聚类算法 2.层次聚类算法 3.SOM聚类算法 4.FCM聚类算法