Leetcode力扣必备算法知识和练习题

Leetcode Top100题目和答案(Java完整版 面试必备) 最近忙着准备春招,复习完这个又复习那个。不过还是忙里偷闲,把剑指Offer这66道题目重新刷了一遍,收获还是很大的,下面贴出答案,又不懂的可以给我留言,博主会及时解答。 我的github 准备把春招复习的知识都整理到github上,一边是自己做个总结,一边也能供大家参考 ——leetcode数据库 19道题 ——剑指Offer 66道题 以下摘自leetcode Top100精选题目 文章目录1.... 阅读详情

https://www.bilibili.com/video/BV1xt4y1e7q4?p=1

一、双指针算法 | Two Pointers

​ 双指针算法是指利用两个指针遍历数组(链表),左右指针相向前进或同向前进,在遍历过程中根据某种限制条件进行筛选,通常可以把时间复杂度降低至O(n)。

  • 普通双指针:两个指针同向移动
  • 对撞双指针:两个指针面对面移动
  • 快慢双指针:慢指针+快指针

1、快慢指针 

141. 环形链表 

    public boolean hasCycle(ListNode head) {
        //链表节点数为0,一定不是循环链表
        if(head == null)
            return false;
        //初始化快慢指针
        ListNode slow = head;
        ListNode fast = head;
        //条件成立说明链表是循环的
        while(fast != null && fast.next != null){//快指针在慢指针前面,只需要判断快指针不为空即可
            slow = slow.next;
            fast = fast.next.next;
            //快指针追上了慢指针,是循环链表
            if(slow == fast)
               return true;
        }
        //循环条件不成立,默认不是循环链表
        return false;
    }

2、对撞指针

881. 救生艇

   public int numRescueBoats(int[] people, int limit) {
        //处理边界值
        if(people == null || people.length == 0)
            return 0;
        
        Arrays.sort(people);//升序排序
    	//初始化对撞指针
    	int i=0;
    	int j=people.length-1;
    	int res = 0;//计数

    	while(i<=j) {
            if(people[i]+people[j] <= limit)
        		i++;
        	j--;
            res++;
    	}
        return res;
    }

二、二分查找法 | Binary Search

二分查找法,是在已经排好序的序列中,定义一个起始位置start(即序列第一个元素)和一个终止位置end(即序列最后一个元素),通过mid=(start+end)/2计算出中间位置,
通过待查找元素与mid中间位置的元素进行比较,如果待查找元素比中间位置mid对应的值小,那么将end = mid -1(即将end结束位置移动到mid中间左边一个位置),
如果比中间对应的值大,那么将start = mid + 1 (即将start的位置移动到mid右边一个位置),一直循环查找,直到start > end,证明没找到对应的元素,停止循环。

应用场景(适用条件)

至少满足以下两个条件:

  1. 已经排好序的序列
  2. 需要查找某个或者某多个值

例题1

704. 二分查找

    public int search(int[] nums, int target) {
        //处理边界值
        if(nums == null || nums.length==0)
            return -1;
        //初始化
        int start = 0;
        int end = nums.length-1;
        
        while(start<=end){
            int mid=(start+end)/2;
            if(nums[mid]==target)
                return mid;
            else if(nums[mid]<target)
                start = mid + 1;
            else
                end = mid - 1;
        }
        return -1;
    }

例题2

35. 搜索插入位置

        //处理边界值
        if(nums == null || nums.length == 0)
            return 0;
        //初始化
        int start = 0;
        int end = nums.length -1;
        int mid = (start+end)/2;
        boolean falg = false;//目标值不存在于数组中

        while(start<=end){
            mid = (start+end)/2;
            if(nums[mid]==target){
                falg = true;//目标值存在于数组中
                return mid;
            }
            else if(nums[mid]<target)
                start=mid+1;
            else
                end=mid-1;
        }
        //如果目标值不存在于数组中
        if(!falg && nums[mid] > target){
            return mid;
        }
        if(!falg && nums[mid] < target){
            return mid +1;
        }
        return 0;

例题3

162. 寻找峰值

    public int findPeakElement(int[] nums) {
        //处理边界值
        if(nums == null || nums.length == 0)
    		return -1;
    	//初始化
    	int start = 0;
    	int end = nums.length-1;

    	while(start<end) {
    		int mid = (start+end)/2;
    		if(nums[mid] < nums[mid+1])//mid<mid+1,递增,峰值在mid的右边
    			start = mid +1;
    		else//mid>=mid+1,递减,峰值在mid左边或者就是mid
    			end = mid;
            //最终start和end都在峰值,即start==end不符合循环条件
    	}
        return end;
    }

例题四

74. 搜索二维矩阵

   public boolean searchMatrix(int[][] matrix, int target) {
     	//处理边界值
    	if(matrix == null || matrix.length == 0)
    		return false;
    	
    	int m = matrix.length;	//行数
    	int n = matrix[0].length;	//列数

        //二维数组转变成一维数组的样子,再进行二分查找。例如[0,0]-->0*n+0; [3,1]-->3*n+1
    	int start = 0*n + 0;
    	int end = (m-1)*n + (n-1);
    	while(start <= end) {
    		int mid = (start+end)/2;
    		int i = mid/n;
    		int j = mid%n;
    		if(matrix[i][j] == target) //找到了
    			return true;
    		else if(matrix[i][j] > target) //目标在左边
    			end = mid -1;
    		else //目标在右边
    			start = mid +1;
    	}
        return false;
    }

三、滑动窗口 | Sliding Window

目的:减少while循环

例如a=[1,4,2,3,4,5,6],3个为一组,取最大的和。

3个为一组看不出来滑动窗口的优点,但是如果1w个为一组呢?

例题1

209. 长度最小的子数组

    public int minSubArrayLen(int target, int[] nums) {
        if(nums == null || nums.length == 0)
            return 0;

        int res = nums.length + 1;  //最小长度
        int total = 0;//连续子数组的和
        int i = 0;//左指针
        int j = 0;//右指针
        while(j<nums.length){
            total+=nums[j];
            j++;//j右移
            //连续子数组的和>=target,i右移
            while(total>=target){
                res = Math.min(res, j-i);
                total -= nums[i];
                i++;//i右移
            }
        }
        if(res == nums.length +1)
            return 0;
        else
            return res;
    }

1456. 定长子串中元音的最大数目

    //1、滑动窗口
    public int maxVowels(String s, int k) {
        int left = 0;
        int right = 0;
        int max = 0;//最大
        int count = 0;

        while(right<s.length()){
            char cr = s.charAt(right);
            if(cr=='a'||cr=='e'||cr=='i'||cr=='o'||cr=='u')
                count++;
            right++;
            if(right-left==k){
                max = Math.max(max, count);
                char cl = s.charAt(left);
                if(cl=='a'||cl=='e'||cl=='i'||cl=='o'||cl=='u')
                    count--;
                left++;
            }
        }

        return max;
    }
    //2、集合类
	 public int maxVowels(String s, int k) {
	  	if(s == null || s.length()==0 || s.length()<k)
	 		return 0;
	   
	 	HashSet<Character> set = new HashSet<Character>();
	 	set.add('a');
	 	set.add('e');
	 	set.add('i');
	 	set.add('o');
	 	set.add('u');
		
	
	 	int count = 0;//每组内的元音字母数计数
	     int res = 0;//最大元音字母数
	     //左指针j = i-k; 右指针i = 0;
	     //第一组
	     for(int i=0; i<k; i++) {
	     	if(set.contains(s.charAt(i))) //如果i是元音字母
	     		count++;
	     }
	     res = Math.max(count, res);
	     //其他组
	     for(int i=k; i<s.length(); i++) {
	     	if(set.contains(s.charAt(i))) //如果i是元音字母
	     		count++;
	     	if(set.contains(s.charAt(i-k))) //如果i-k是元音字母
	     		count--;
	     	res = Math.max(count, res);
	     }
	     return res;
	 }

四、递归 | Recursion

四个要素

  • 接受的参数
  • 返回值
  • 终止的条件
  • 递归拆解,如何递归到下一层

 时间复杂度o(n),空间复杂度o(n)

例题1

509. 斐波那契数

    public int fib(int n) {
        if(n==0)
            return 0;
        if(n==1)
            return 1; 
        return fib(n-1)+fib(n-2);
    }

例题2

206. 反转链表

    public ListNode reverseList(ListNode head) {
        if(head==null || head.next==null)   //链表为null或者指向链表最后一个元素时
            return head;
        ListNode P = reverseList(head.next);
        head.next.next = head;
        head.next = null;
        return P;
    }

344. 反转字符串

    //递归方式
    public void reverseString(char[] s) {
        if(s == null || s.length == 0)
            return;
        int left = 0;
        int right = s.length-1;
        func(s, left, right);
    }
    public void func(char[] s, int left, int right){
        if(left>=right)
            return;
        func(s,left+1,right-1);
        char temp = s[right];
        s[right] = s[left];
        s[left] = temp;
        return;
    }
    //双指针(简单,优化较好)
    public void reverseString(char[] s) {
       int i = 0;
       int j = s.length-1;
       while(i<=j){
           char temp = s[j];
           s[j] = s[i];
           s[i] = temp;
           j--;
           i++;
       }
    }

五、分治法 | Divide And Conquer

  • 大问题切割成一个个小问题
  • 用到递归,自己调用自己

归并排序就是一个用分治法的经典例子:

  1. 归并排序首先把原问题拆分成2个规模更小的子问题。
  2. 递归地求解子问题,当子问题规模足够小时,可以一下子解决它。在这个例子中就是,当数组中的元素只有1个时,自然就有序了。
  3. 最后,把子问题的解(已排好序的子数组)合并成原问题的解。

例题1

169. 多数元素

    public int majorityElement(int[] nums) {
        return getMajority(nums, 0, nums.length-1);
    }
    public int getMajority(int[] nums, int left, int right) {
		//终止条件
		if(left==right)
			return nums[left];//只剩一个,返回多数元素
		
		int mid = (left+right)/2;
		int leftMajority = getMajority(nums, left, mid);//左边多数元素
		int rightMajority = getMajority(nums, mid+1, right);//右边多数元素
		if(leftMajority==rightMajority)//如果左边多数元素=右边多数元素
			return leftMajority;
		
		////如果左边多数元素和右边多数元素不一样,那么就要合并-->nums[left,right],遍历
		int leftCount = 0;
		int rightCount = 0;
		for(int i=left; i<=right; i++) {
			if(nums[i] == leftMajority)
				leftCount++;
			if(nums[i] == rightMajority)
				rightCount++;
		}
		if(leftCount>rightCount)
			return leftMajority;
		else
			return rightMajority;
	}

例题2

53. 最大子序和

 

六、回溯法 | Backtracking

类似枚举,一层一层向下递归,尝试搜索答案

回溯算法=DFS+剪枝

找到答案:

  • 尝试别的答案  
  • 返回答案

找不到答案:

  • 返回上一层递归,尝试别的路径

例题1

22. 括号生成

    public List<String> generateParenthesis(int n) {
    	List<String> result = new ArrayList<String>();
    	backtracking(n, result, 0, 0, "");
		return result;
    }

	private void backtracking(int n, List<String> result, int left, int right, String str) {
		if(left < right)//不合格
			return;
		if(left == right && right == n)//结果
			result.add(str);
		
		if(left<n)//加左括号
			backtracking(n, result, left+1, right, str+"(");
		if(right<left)//加右括号
			backtracking(n, result, left, right+1, str+")");
				
	}

例题2

78. 子集

    public List<List<Integer>> subsets(int[] nums) {
		List<List<Integer>> result = new ArrayList<List<Integer>>();	//结果集
		result.add(new ArrayList<Integer>());
		for(int i=1; i<=nums.length; i++)//长度0、1、2、3...
			backtracking(nums, result, i, 0, new ArrayList<Integer>());
		return result;
    }
    
	//nums 整数数组; result 结果集; length 长度; index	索引; subset 子集
	public void backtracking(int[] nums, List<List<Integer>> result, int length, int index, List<Integer> subset) {
		//如果当前子集长度==length,合格,填充到结果集result
		if(subset.size() == length) {
			List<Integer> temp = new ArrayList<Integer>(subset);
			result.add(temp);
			return;
		}
		//找子集
		for(int i=index; i<nums.length; i++) {
			subset.add(nums[i]);
			backtracking(nums, result, length, i+1, subset);
			subset.remove(subset.size()-1);
		}
	}

七、深度优先搜索 DFS

例题1

938. 二叉搜索树的范围和

    //递归
    public int rangeSumBST(TreeNode root, int low, int high) {
        if(root==null)
            return 0;
        int leftSum = rangeSumBST(root.left, low, high);
        int rightSum = rangeSumBST(root.right, low, high);

        int result = leftSum + rightSum;
        if(low <= root.val && root.val <= high)
            result += root.val;
        return result;
    }
    //BFS
    public int rangeSumBST(TreeNode root, int low, int high) {
        int result = 0;
        Queue<TreeNode> q = new LinkedList<>();
        q.add(root);//创建一个队列,把根节点加进去

        while(q.size() > 0){
            int size = q.size();
            while(size > 0){
                TreeNode cur = q.poll();//取队尾
                if(low <= cur.val && cur.val <= high)
                    result += cur.val;
                
                if(cur.left != null)
                    q.add(cur.left);
                if(cur.right != null)
                    q.add(cur.right);
                size --;
            }
        }
        return result;

例题2

200. 岛屿数量


 

 

 

 

 

力扣 LeetCode 会员特权解析:算法刷题必备还是锦上添花? 本文深度解析力扣LeetCode会员的核心价值,重点剖析其企业题库、面试热度与快速判题等特权功能。对于有明确求职目标、需要高效精准准备算法面试的用户而言,会员能提供针对性练习和流畅体验,是提升刷题效率的实用工具。而对于算法初学者,免费题库已足够夯实基础。 阅读详情

相关推荐

别再只盯着时序了!聊聊SDC里那些容易被忽略的‘配角’命令:工作条件、线载模型与面积约束

本文深入探讨了SDC(设计约束)中常被忽视的关键命令,包括set_operating_conditions、set_wire_load_model和set_max_area。这些‘配角’命令在芯片设计中扮演着至关重要的角色,影响时序收敛、功耗和面积优化。文章通过实际案例和最佳实践,揭示了如何正确配置工作条件、选择线载模型以及动态调整面积约束,以提升设计质量和效率。

weixin_26875109的博客 208

力扣----算法(一)

给定target,找出数组里和为target的数组下标 题目描述: 测试结果: import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class solution { public int[] twoSum(int[]nums, int target){ int []ret=new int[2];//用来存放下标的数组 int len=nu.

wxxxx_xx的博客 2368

分子对接中的相互作用特征分析(目视筛查)

介绍分子对接的相互作用特征,以及如何通过这些特征进行目视筛查

recher_He1107的博客 5758

力扣算法学习

力扣算法 六六 无聊整理看看。

qq_44173650的博客 1415

STM32 移植LwIP 实现网线插拔自动恢复

STM32 移植LwIP 之后,能正常联网通讯,但是发现2个问题, 1、上电初始化前,未插入网线,之后就无法获取到IP地址(DHCP) 2、正常通讯过程中,拔掉网线,然后插回去,不知道如何复位 先看一下LWIP初始化代码 /** * LwIP initialization function */ int MX_LWIP_Init() { /* Initilialize the LwIP stack with RTOS */ tcpip_init( NULL, NULL );

tiantangmoke的博客 8073

PyTorch转ONNX遇到算子不支持?3种实战解决方案+TensorRT适配技巧

本文针对PyTorch模型导出ONNX时常见的算子不支持问题,提供了从诊断到解决的完整实战指南。首先讲解如何精准定位错误根源,随后详细介绍了三种核心解决方案:注册缺失的符号映射、实现自定义算子,以及为TensorRT开发插件的终极落地方案。文章还分享了构建稳健部署流水线的工程化实践,帮助开发者系统性地解决模型部署中的算子兼容性挑战。

fern8的博客 842

力扣算法_数组篇

针对于2024届秋招--软件开发笔试部分#日常学习+更新

weixin_51775646的博客 338

动态掩码语言模型(MLM)优化策略:效率提升与最新技术实践

本文深入探讨了动态掩码语言模型(MLM)的优化策略与技术实践,涵盖核心原理、效率优化及2025年最新突破。重点解析了动态掩码在提升模型性能中的关键作用,包括工程实现、掩码策略演进及混合专家动态掩码等创新技术,为自然语言处理领域的研究与应用提供实用指南。

vscode5coder的博客 220

力扣算法整理

力扣算法整理

Leesure_优快云的博客 3719

Holtek BS45F3833芯片深度剖析:如何用高集成MCU重塑超声波雾化市场格局?

本文深度剖析Holtek BS45F3833芯片如何通过高集成MCU技术重塑超声波雾化市场。该芯片集成了PWM直驱、电容检水、触摸控制等核心功能,显著提升雾化精度和效率,同时降低BOM成本和开发难度。文章通过实测数据和实战案例,展示了其在香薰机、车载设备及工业加湿器等场景的创新应用,为开发者提供了一站式解决方案。

weixin_29192211的博客 413

三、分区配置

rk3566/rk3568 修改分区

暮云星影的博客 514

数据结构算法力扣总结1

完全二叉树和普通二叉树的区别完全二叉树中每个节点要么是满的,要么有左节点,而且该左节点是最后一个节点普通二叉树中就没有这么多要求一般选择排序方法时,会选择快速排序,首先它的时间复杂度是最优的,其次它的常数项经过实验的速度是最快的如果空间有限,很容易空间就超了,使用推排序如果需要用到稳定性,使用归并排序**问1:**现在的排序算法能不能做到空间复杂度在O(N * logN)或者以下?答:不能,目前还没有发现这样的算法。

maomo321的博客 847

西门子G120变频器在立体仓库堆垛机应用参数设置

本文详细介绍了G120 CU240E及CU250S变频器的参数设置流程。主要内容包括:1)快速调试步骤,从新建项目、扫描节点到设置电机类型、负载类型等参数;2)抱闸参数设置方法;3)参数下载异常时的处理方案。重点说明了通过STARTER软件进行向导式调试的完整过程,包括电机铭牌参数输入、识别方式选择等关键环节,并提示了通讯连接注意事项。当下载失败时,提供了通过导入导出项目文件解决问题的具体方法。

xdpcxq的专栏 863

推荐一个程序员必备官方 App ,名字叫:力扣

【回复“1024”,送你一个特别推送】天真的很冷,冬天真的来了。就在刚刚我在淋着雨,回到了温暖的家中。对头,身在北方我们,家中有暖气,南方同学别羡慕哦!哈哈,是的,我们供...

非著名程序员 8639

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Offer必备算法31_DFS回溯剪枝_九道力扣题详解(由易到难)

Offer必备算法31_DFS回溯剪枝_九道力扣题详解(回溯算法简介+①力扣46. 全排列+②力扣78. 子集+③力扣1863. 找出所有子集的异或总和再求和+④力扣47. 全排列 II+⑤力扣17. 电话号码的字母组合+⑥力扣22. 括号生成+⑦力扣77. 组合+⑧力扣494. 目标和+⑨力扣39. 组合总和)

参考书籍:《C语言程序设计》《数据结构》《C++ Primer》《Effective C++》《STL源码剖析》《现代操作系统》《UNIX环境高级编程》《图解TCP/IP》《图解HTTP》《Linux高性能服务器编程》《剑指Offer》《算法导论》 2057

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Offer必备算法12_链表_五道力扣题详解(由易到难)

Offer必备算法12_链表_五道力扣题详解(力扣2两数相加+力扣24两两交换链表中的节点+力扣143重排链表+力扣23合并K个升序链表+力扣25K个一组翻转链表)

参考书籍:《C语言程序设计》《数据结构》《C++ Primer》《Effective C++》《STL源码剖析》《现代操作系统》《UNIX环境高级编程》《图解TCP/IP》《图解HTTP》《Linux高性能服务器编程》《剑指Offer》《算法导论》 2056

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Offer必备算法01双指针_八道力扣OJ题详解(由易到难)

Offer必备算法01双指针_八道力扣OJ题详解,力扣283+1089+202+11+611+15+18+剑指Offer57。(由易到难)

参考书籍:《C语言程序设计》《数据结构》《C++ Primer》《Effective C++》《STL源码剖析》《现代操作系统》《UNIX环境高级编程》《图解TCP/IP》《图解HTTP》《Linux高性能服务器编程》《剑指Offer》《算法导论》 1684

力扣( LeetCode)刷题,这么做才高效

BAT 等国内的一线名企,在招聘工程师的过程中,对算法和数据结构都会重点考察。但算法易学难精,我的很多粉丝技术能力不错,但面试时总败在算法这一关,拿不到好 Offer。但说实话,数据结构...

架构文摘 2898

Offer必备算法08_二叉树dfs_六道力扣题详解(由易到难)

Offer必备算法08_二叉树dfs_六道力扣题详解(由易到难)力扣2331计算布尔二叉树的值+力扣129求根节点到叶节点数字之和+力扣8146二叉树剪枝+力扣98验证二叉搜索树+力扣230二叉搜索树中第K小的元素+力扣257二叉树的所有路径。

参考书籍:《C语言程序设计》《数据结构》《C++ Primer》《Effective C++》《STL源码剖析》《现代操作系统》《UNIX环境高级编程》《图解TCP/IP》《图解HTTP》《Linux高性能服务器编程》《剑指Offer》《算法导论》 2286

力扣LeetCode面试150道题及题解整理:全方位提升算法能力

力扣LeetCode面试150道题及题解整理:全方位提升算法能力 【下载地址】力扣LeetCode面试150道题及题解整理 这份资源整理了力扣(LeetCode)面试中常见的150道题目及其详细解答,涵盖数组、链表、树、图、动态规划、贪心算法等多种算法和数据结构的应用。每道题目均附有详细解答,帮助您理解解题思路和方法。无...

gitblog_06781的博客 1100

LeetCode 牛客网 C++ 算法 刷题必备基础知识

LeetCode 牛客网 C++ 算法 刷题必备基础知识 文章目录LeetCode 牛客网 C++ 算法 刷题必备基础知识main综合模板数组排序库字符串库向量vector的基本用法vector初始化Vector 排序栈queue的基本用法堆stack的基本用法hashmap的基本用法(构建一 一映射的关系)奇技淫巧辗转相除法求最大公约数如何判断链表有环,并找出入环点异或运算 可以快速判断多个项的...

huwei039的博客 4316

Offer必备算法04_前缀和_牛客+力扣OJ题详解(由易到难)

Offer必备算法04_前缀和_牛客+力扣OJ题详解,牛客DP34+DP35+力扣724+238+560+974+525+1314。

参考书籍:《C语言程序设计》《数据结构》《C++ Primer》《Effective C++》《STL源码剖析》《现代操作系统》《UNIX环境高级编程》《图解TCP/IP》《图解HTTP》《Linux高性能服务器编程》《剑指Offer》《算法导论》 1920

Offer必备算法14_哈希表_五道力扣题详解(由易到难)

Offer必备算法14_哈希表_五道力扣题详解(①力扣1. 两数之和+②力扣面试题 01.02. 判定是否互为字符重排+③力扣217. 存在重复元素+④力扣219. 存在重复元素 II+⑤力扣49. 字母异位词分组)

参考书籍:《C语言程序设计》《数据结构》《C++ Primer》《Effective C++》《STL源码剖析》《现代操作系统》《UNIX环境高级编程》《图解TCP/IP》《图解HTTP》《Linux高性能服务器编程》《剑指Offer》《算法导论》 1803

Offer必备算法34_贪心算法二_七道力扣题详解(由易到难)

Offer必备算法34_贪心算法二_七道力扣题详解(①力扣121. 买卖股票的最佳时机+②力扣122. 买卖股票的最佳时机 II+③力扣1005. K 次取反后最大化的数组和+④力扣2418. 按身高排序+⑤力扣870. 优势洗牌(田忌赛马)+⑥力扣409. 最长回文串+⑦力扣942. 增减字符串匹配)

参考书籍:《C语言程序设计》《数据结构》《C++ Primer》《Effective C++》《STL源码剖析》《现代操作系统》《UNIX环境高级编程》《图解TCP/IP》《图解HTTP》《Linux高性能服务器编程》《剑指Offer》《算法导论》 1635

Offer必备算法13_路径dp_六道力扣题详解(由易到难)

Offer必备算法13_路径dp_六道力扣题详解(由易到难)(力扣62不同路径+力扣63不同路径 II+力扣LCR166珠宝的最高价值+力扣931下降路径最小和+力扣64最小路径和+力扣174. 地下城游戏)

参考书籍:《C语言程序设计》《数据结构》《C++ Primer》《Effective C++》《STL源码剖析》《现代操作系统》《UNIX环境高级编程》《图解TCP/IP》《图解HTTP》《Linux高性能服务器编程》《剑指Offer》《算法导论》 1950

力扣刷题必备(java版)

判断为空采用是stack.isEmpty();Queue和Deque的方法相同,故可忽略stack和queue的区别,统一记后一种方法。

weixin_51951103的博客 1937
上一篇: 第九届蓝桥杯大赛省赛C语言B组-填空题-乘积尾零(Java实现)
下一篇: org.apache.dubbo.rpc.RpcException: No provider available from registry localhost:9090 for service
青衫落拓客
博客等级 码龄8年 41粉丝 74原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值