力扣算法

news/2025/1/7 0:29:30/文章来源:https://www.cnblogs.com/dou66/p/18652775

1.[两数之和]
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
暴力法
public int[] TwoSum(int[] nums, int target)
{// 第一层循环:遍历数组中的每个数for (int i = 0; i < nums.Length; i++){// 第二层循环:从i的下一个位置开始遍历for (int j = i + 1; j < nums.Length; j++){// 判断当前两个数的和是否等于目标值if (nums[i] + nums[j] == target){return new int[] { i, j };  // 找到答案就立即返回这两个数的索引}}}return new int[] { 0, 0 };  // 如果没找到,返回默认值
}
哈希法
public int[] TwoSum(int[] nums, int target)
{// 创建字典,用于存储数字和它的索引Dictionary<int, int> map = new Dictionary<int, int>();// 只需要一次遍历for (int i = 0; i < nums.Length; i++){// 计算需要配对的数字int complement = target - nums[i];// 检查字典中是否已经存在配对的数字if (map.ContainsKey(complement)){// 如果存在,返回配对数字的索引和当前数字的索引return new int[] { map[complement], i };}// 如果当前数字不在字典中,将其加入字典if (!map.ContainsKey(nums[i])){map.Add(nums[i], i);}}return new int[] { 0, 0 };
}

2.[移动零]
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]
双指针
public class Solution {public void MoveZeroes(int[] nums) {// 慢指针指向要填入非零数的位置int slow = 0;// 快指针遍历数组寻找非零数for (int fast = 0; fast < nums.Length; fast++){// 当找到非零数时if (nums[fast] != 0){// 如果两个指针不同,进行交换if (slow != fast){nums[slow] = nums[fast];nums[fast] = 0;}// 移动慢指针slow++;}}}
}

3.[有效的括号]
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。

输入:s = "()[]{}"
输出:true
输入:s = "(]"
输出:false
public class Solution {public bool IsValid(string s) {// 创建一个栈来存储左括号Stack<char> stack = new Stack<char>();// 遍历字符串中的每个字符foreach(char c in s){// 如果是左括号,入栈if(c == '(' || c == '[' || c == '{'){stack.Push(c);}// 如果是右括号else{// 如果栈为空,说明没有匹配的左括号if(stack.Count == 0) return false;// 获取栈顶的左括号char top = stack.Pop();// 检查是否匹配if(c == ')' && top != '(') return false;if(c == ']' && top != '[') return false;if(c == '}' && top != '{') return false;}}// 最后检查栈是否为空return stack.Count == 0;}
}

4.[爬楼梯]
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

输入:n = 3
输出:3
解释:有三种方法可以爬到楼顶。
1. 1 阶 + 1 阶 + 1 阶
2. 1 阶 + 2 阶
3. 2 阶 + 1 阶
动态规划
public class Solution {public int ClimbStairs(int n) {// 处理基础情况:如果台阶数小于等于2,直接返回nif(n <= 2) return n;// 创建动态规划数组,dp[i]表示爬到第i阶的方法数int[] dp = new int[n + 1];dp[1] = 1;  // 爬到第1阶只有1种方法dp[2] = 2;  // 爬到第2阶有2种方法// 从第3阶开始,每一阶的方法数是前两阶方法数的和for(int i = 3; i <= n; i++) {dp[i] = dp[i-1] + dp[i-2];}// 返回爬到第n阶的方法数return dp[n];}
}
递归
public class Solution {public int ClimbStairs(int n) {// 处理基础情况if(n <= 2) return n;// 只用两个变量记录前两阶的方法数int prev = 1;  // 记录i-2阶的方法数int curr = 2;  // 记录i-1阶的方法数// 计算每一阶的方法数for(int i = 3; i <= n; i++) {int temp = curr;     // 暂存当前值curr = prev + curr;  // 新的方法数prev = temp;         // 更新前一阶的方法数}return curr;}
}

5.[杨辉三角]

输入: numRows = 5
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/864096.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BJT的共射极伏安特性曲线

BJT(双极型晶体管)共射极的伏安特性曲线包括输入特性曲线和输出特性曲线,以下是详细讲解:输入特性曲线定义:描述基极电流\(i_B\)与基极-发射极电压\(v_{BE}\)之间的关系,通常以集电极-发射极电压\(v_{CE}\)为参变量,即\(i_B = f(v_{BE})|_{v_{CE}=constant}\)。 曲线形状…

检索增强生成和思维链结合: 如何创建检索增强思维链 (RAT)?

论文地址:https://arxiv.org/pdf/2403.05313 Github地址:https://github.com/CraftJarvis/RAT 想象一下,一个人工智能助手可以像莎士比亚一样写作,像专家一样推理。这听起来很了不起,对吧?但是,如果这个助手有时难以确保事实准确性,依赖过时的信息或只是编造事实,该怎…

163MusicLyrics(歌词下载工具) v6.3

一款Windows 云音乐歌词获取,支持网易云、QQ音乐。 软件特点 支持网易云、QQ音乐两家音乐提供商 支持输入歌曲 ID、输入专辑 ID、完整链接的方式进行查询 支持批量查询 && 扫盘查询 支持多种歌词原文和译文的组织方式 支持提取(部分)歌曲试听链接 支持多种保存命名规…

维度情感模型

一.维度情感模型 人类的情感是复杂繁琐的认知过程,很难对人类情感进行简单的概括,现阶段的情感模型大多分为两种,分别是离散情感模型和维度情感模型。 传统上,情感被看作是离散的类别,例如快乐、悲伤、愤怒等。离散情感模型将情感分为独立的类别,著名的心理学家Ekman等人…

Android 洛雪音乐 v1.6.0

洛雪音乐电脑版本很出名,手机版本同样是一个作者开发的产品,使用React native开发的安卓版本,软件界面清新,功能强大,该有的功能都有。同时,软件已经开源,允许所有人学习源码。获取地址:https://www.dmjf.top/2542.html

雪藏HsFreezer(游戏冻结工具) v2.09

HsFreezer 是一款让你可以随心冻结游戏的软件(游戏暂停软件、系统优化软件、进程管理软件),想玩就玩,想停就停,快捷键随心瞬发,单锁模式极致的丝滑切换,当然,不止适用游戏。更有丰富的特色系统优化功能。 PC主机,win掌机,笔记本–无脑装就对了,超大按键超大列表,触控盲操,非常巴…

Android Auto Text(自动发短信) v5.5.8 高级版

Auto Text(原Do It Later)是一款简洁好用的以后再做计划程序应用,有了 Do It Later Pro 即使您在睡觉、忙碌或不在手机旁时,也可以给某人你发送短信(SMS)。直观的提醒绝不会让您错过任何事情。它支持虚拟来电计划、SMS计划程序、电子邮件计划程序、社交网络计划程序和任务计…

洛雪音乐助手 v2.9.0 绿色版

洛雪音乐助手是一款第三方的音乐搜索下载软件,支持很多个接口。虽然软件核心没有直接解析,但是这UI的功底,绝对是国内数一数二的。值得推荐和使用! 软件支持试听,获取排行榜,是一款能当音乐软件使用的软件获取地址:https://www.dmjf.top/2268.html

浏览器本地存储 WebStorage包括localstorage sessionstorage

一、概念 浏览器端通过sessionstorage和localstorage属性来实现本地存储 二、相关API// 设置,key value,key若存在,则则更新value,value为字符串,需要使用JSON localStorage.setItem(msg, Hello) sessionStorage.setItem(msg, Hello)// 获取value,根据key,value是字符串…

Win32汇编学习笔记04.重定位与汇编引擎

Win32汇编学习笔记04.重定位与汇编引擎-C/C++基础-断点社区-专业的老牌游戏安全技术交流社区 - BpSend.net 重定位 **重定位:**也称为代码自重定位,代码自己去计算自己使用的各种资源再新进程中的地址,相应代码被称为被重新定位过后的代码。 示例目标:向指定进程 扫雷 注入…

【哈希算法】实战应用

一、使用哈希进行函数调用 使用哈希隐藏API调用 代码 #include <windows.h> #include <stdio.h>int main() {MessageBoxA(NULL, "Meow-meow!","=^..^=", MB_OK);return 0; }编译 i686-w64-mingw32-g++ meow.c -o meow.exe -mconsole -I/usr/sh…