`

算法2

 
阅读更多
两数之和,数组中两个数和等于固定值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:小灰的算法进阶.pptx

    漫画算法2:小灰的算法进阶 《漫画算法2:小灰的算法进阶》是一本以漫画形式生动展现算法进阶知识的图书。本书以小灰的视角,通过一系列有趣的场景和生动的漫画,深入浅出地讲解了算法的高级概念和技术,包括图算法...

    最清晰的国密算法SM2_SM3_SM4标准规范.zip

    最全最清晰的国密算法SM2、SM3、SM4算法标准规范。 SM1 为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。 SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于...

    贝叶斯网络学习算法――k2算法

    K2算法是其中一种用于学习贝叶斯网络结构的算法,尤其适用于小到中等规模的数据集。 K2算法,全称为Cowell-Koller-Komorowski算法,由R. Cowell、M. Koller、A. Komorowski于1994年提出。该算法基于最大后验概率...

    js国密算法sm2以及国密算法sm3 js的实现以及例子

    js国密算法sm2以及国密算法sm3 js的实现以及例子 js国密算法sm2以及国密算法sm3 js的实现以及例子

    C#国密加密算法SM2,SM3,SM4

    C#国密加密算法SM2,SM3,SM4的一个实现案例,不涉及具体的算法剖析,在网络上关于这个加密算法的文档较少,切在跨语言加密解密上会存在一些问题,所以整理。

    国密算法SM2,SM3,SM4的VC库

    国密算法SM2, SM3, SM4的VC库文件, 只要在VC工程中添加头文件, 再包括LIB文件就可以了.注意LIB与两个DLL要一起放在VC编译生成的DEBUG及RELEASE目录下.内附测试工具,可以验证算法的正确性.

    经典算法2(素数算法).c

    经典算法2(素数算法).c

    sm2算法sm2算法sm2算法sm2算法

    sm2算法sm2算法sm2算法sm2算法

    pet重建算法2

    主要在于介绍统计迭代重建算法研究与优化,便于理解与运用

    国密算法 SM2 、SM3、SM4 加解密,签名验签,C#源码

    国密算法功能 1. SM2 加密解密、公钥私钥生成、签名与验签; 2. SM4 加密解密; 3. SM3加密 4. 代码实现、调用案例源码 代码经过本人测试通过,调用BouncyCastle.Crypto.dll的全部实现代码,源码分享。

    clock页面置换算法

    简单的clock页面置换算法 采用CLOCK置换算法仿真请求分页系统 1、设计目的:用高级语言编写和调试一个内存分配程序,加深对内存分配算法的理解。 2、设计要求: 1) 实现请求分页存储管理方式的页面置换算法:...

    操作系统实验:磁盘移臂调度算法作业(有界面 QT 可视化)

    磁盘移臂调度算法作业 1、实验目的:加深对于操作系统设备管理技术的...(2)能对两种算法给定任意序列不同的磁盘请求序列,显示响应磁盘 请求的过程。 (3)能统计和报告不同算法情况下响应请求的顺序、移臂的总量。

    超启发式算法介绍大全

    2. 基于贪心策略的超启发式算法 3. 基于元启发式算法的超启发式算法 4. 基于学习的超启发式算法 基于随机选择的超启发式算法 基于随机选择的超启发式算法是从给定的集合中随机选择 LLH,组合形成新的启发式算法。...

    python实现可视域算法

    使用python实现了可视域计算的几种经典算法,包括LOS算法,Xdraw算法,参考面算法等

    SM2,SM4,SM3,国密算法PHP版

    SM2,SM4,SM3,SM1 PHP版算法实现,亲测可用欢迎大家下载

    java 国密算法实现包含SM2 SM3 SM4和数字签名、数字证书的验证

    2. **SM3算法**:SM3是一种密码散列函数,类似于SHA-256,用于产生固定长度的摘要值。在Java中,你可以通过扩展`MessageDigest`类或者使用特定库来实现SM3哈希计算,以确保数据的完整性和一致性。 3. **SM4算法**:...

    最新某男孩第8期算法+设计模式

    10.s8算法2-4 链表 哈希表 11.s8算法2-5 算法题 12.S8设计模式-1 设计模式简介 13.S8设计模式-2 创建型模式 14.S8设计模式-3 结构型模式 15.S8设计模式-4 行为型模式 16.5 设计模式总结 17.6 二叉树 18.7 算法进阶 2...

    粒子群算法2.rar_粒子群算法_粒子群算法代码

    智能算法中的粒子群算法的代码,很好用,分享给需要的朋友们

    漫画算法系列-2020.11.25(B).pdf

    漫画算法系列-2020.11.25(B).pdf

Global site tag (gtag.js) - Google Analytics