【LeetCode之C#解法】 移动零、爬楼梯
dotNET知音
共 1513字,需浏览 4分钟
· 2020-08-30
题目官网链接 https://leetcode-cn.com/problems/move-zeroes/
283. 移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:
必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。
题解:
public void MoveZeroes(int[] nums)
{
// 解法1:处理不为0的,再处理为0的
if (nums == null || nums.Length == 0)
return;
int index = 0;
for (int i = 0; i < nums.Length; i++)
{
if (nums[i] != 0)
nums[index++] = nums[i];
}
while (index < nums.Length)
{
nums[index++] = 0;
}
// 解法2:遇到不为0的 互换位置
int j = 0;
for (int i = 0; i < nums.Length; i++)
{
if (nums[i] != 0)
{
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
j++;
}
}
}
题目官网链接 https://leetcode-cn.com/problems/climbing-stairs/
70. 爬楼梯
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2个台阶。你有多少种不同的方法可以爬到楼顶呢?
注意:给定 n 是一个正整数。
示例 1:
输入: 2
输出: 2
解释: 有两种方法可以爬到楼顶。
1. 1 阶 + 1 阶
2. 2 阶
示例 2:
输入: 3
输出: 3
解释: 有三种方法可以爬到楼顶。
1. 1 阶 + 1 阶 + 1 阶
2. 1 阶 + 2 阶
3. 2 阶 + 1 阶
题解:
public int ClimbStairs(int n)
{
// // 解法1:递归(记忆化搜索)
// int[] memo = new int[n + 1];
// return helper(n, memo);
// // 解法2:动态规划
// if (n == 1)
// return 1;
// int[] dp = new int[n + 1];
// dp[1] = 1;
// dp[2] = 2;
// for (int i = 3; i <= n; i++)
// dp[i] = dp[i - 1] + dp[i - 2];
// return dp[n];
// 解法3:斐波那契数
if (n == 1)
return 1;
int first = 1;
int second = 2;
for (int i = 3; i <= n; i++)
{
int third = first + second;
first = second;
second = third;
}
return second;
}
public int helper(int n, int[] memo)
{
if (n <= 2)
return n;
if (memo[n] != 0)
return memo[n];
memo[n] = helper(n - 1, memo) + helper(n - 2, memo);
return memo[n];
}
源码地址:https://github.com/amusement1234/LeetCode_CSharp
评论
轻松学习C#:百度行驶证C++离线SDK接入详解
效果 先看最终效果SDK 拿到完整包如图,687M解压后看看内容发现有个readme.txt,那就先看看内容1:用vs2015打开sln工程,最好用vs2015 comunity版本,可微软官网下载。2:sdk的doc目录有pdf接口文档。3:工程总入口main.cpp、请参考示例实现您的功能。4:
DotNet NB
9
C#中using的使用的几种场景
using在C#中随处可见,比如引入命名空间,这是也是每个C#的cs页面必须存在的,除了引入命名空间还有几种用法,下面将介绍这几种的使用。1、用于引入命名空间 这是最常见最基本的用法, 这样可以在程序中直
dotNET全栈开发
603
AI大模型之路 第三篇:从零实现词嵌入模型,加深理解!
你好,我是郭震今天我们研究「AI大模型第三篇」:词维度预测,很多读者听过词嵌入,这篇文章解答下面问题:词嵌入是什么意思?怎么做到的?原理是什么?从零实现一个专属你数据集的词嵌入我们完整从零走一遍,根基的东西要理解透,这样才能发明出更好的东西。1 skip-gram模型Skip-gram模型是一种广泛
Python与算法社区
11
排名问题新解法:探索可视化计算中的 RANK 函数
上次我们介绍了可视化计算替代 DAX 计算的一些场景。参考:PowerBI 进阶:可视化计算替代 DAX 场景探索今天我们介绍一个新的场景,这是一个困扰许多人的问题,排名问题。在 DAX 中,很多新手小白对于上下文概念还不太理解,但在处理排名问题时又要求你必须理解一些上下文,比如常见的绝对排名和相对
PowerBI战友联盟
8
带你玩转Linux系统之lscpu命令
链接:https://bbs.huaweicloud.com/blogs/422603一、lscpu命令介绍lscpu 是一个 Linux 命令,用于显示CPU架构的详细信息。它可以用来查看 CPU 的型号、主频、架构、虚拟化支持等。二、lscpu命令的使用帮助2.1 命令格式lscpu [选项]2
良许Linux
0
C语言基础之动态内存操作汇总
来源:机器之心1、堆区空间申请#include <stdlib.h> //头文件void *malloc(size_t size);//函数size表示申请的空间字节数函数的返回值:成功:返回值空间起始地址失败:NULL特点:分配指定大小的内存空间;分配的内存空间是连续的;需要手动释放
良许Linux
0
C# 优雅的处理 TCP 数据
前言Tcp是一个面向连接的流数据传输协议,用人话说就是传输是一个已经建立好连接的管道,数据都在管道里像流水一样流淌到对端。那么数据必然存在几个问题,比如数据如何持续的读取,数据包的边界等。Nagle's算法Nagle 算法的核心思想是,在一个 TCP 连接上,最多只能有一个未被确认的小数据包(小于
dotNET全栈开发
1075
大模型并行训练指南:通俗理解Megatron-DeepSpeed之模型并行与数据并行(下)
文末《大模型项目开发线上营》秒杀倒计时↓↓↓接前文:(上)篇>>>大模型并行训练指南:通俗理解Megatron-DeepSpeed之模型并行与数据并行(上)(中)篇>>>大模型并行训练指南:通俗理解Megatron-DeepSpeed之模型并行与数据并行(中)06
七月在线实验室
10