自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 Leetcode 344 557

344.反转字符串 题目描述:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 思路:对字符串数组头尾依次交换。 代码如下: public class Solution { public void ReverseString(char[] s) { int i=0;

2021-01-28 23:41:42 97

原创 Leetcode 237 238 292

237.删除链表中的结点 题目描述:请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。 现有一个链表 – head = [4,5,1,9],它可以表示为: 思路:输入参数只有要删除的结点,因此只能利用这个要删除的结点依次将后面结点的值填到前一位。 代码如下: /** * Definition for singly-linked list. * public class ListNode { * public int val; * p

2021-01-28 22:26:01 111

原创 Leetcode 231 235 236

231.2的幂 题目描述:给定一个整数,编写一个函数来判断它是否是 2 的幂次方。 思路:对

2021-01-27 23:39:20 114

原创 Leetcode 215 217 230

215.数组中的第k个最大元素 题目描述:在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 思路:对数组进行排序,返回第k个最大元素。 代码如下: public class Solution { public int FindKthLargest(int[] nums, int k) { Array.Sort(nums); return nums[nums.Length-k];

2021-01-26 22:04:34 104

原创 Leetcode 160 169 206

160.相交链表 题目描述:编写一个程序,找到两个单链表相交的起始节点。 思路:采用集合的方式即可。 代码如下: /** * Definition for singly-linked list. * public class ListNode { * public int val; * public ListNode next; * public ListNode(int x) { val = x; } * } */ public class Solution {

2021-01-25 22:21:21 224

原创 Leetcode 146 148 155

146.LRU缓存机制 题目描述:运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。 实现 LRUCache 类: LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。 void put(int key, int value) 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字-值」。当缓存容量达到上限

2021-01-23 23:21:33 183

原创 Leetcode 136 141 142

136.只出现一次的数字 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 思路:如果直接将数组排列后寻找不成对的数字,会超出时间限制。本题采用位运算的方法,按位异或:两个相同的数字按位异或的结果为0;任何数和0按位异或结果为它本身;按位异或可结合,可交换。因此,只需要将数组里的所有元素按位异或,就可以得到只出现一次的数字。 代码如下: public class Solution

2021-01-22 22:08:16 161

原创 Leetcode 121 122 124

121.买卖股票的最佳时机 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。 注意:你不能在买入股票前卖出股票。 思路:买卖股票讲究在股票价格较低的时候买入较高的时候卖出。设置一个变量min表示当前直到位置,价格的最小值,再设置一个变量max表示直到当前位置如果卖出股票所得的最大利润(如果到当前位置还没买入则视作再当前位置同时买卖股票,利润为0。) 代码如下: public class So

2021-01-21 21:44:12 137

原创 Leetcode 88 89 104

88.合并两个有序数组 题目描述:给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。 思路:nums1有足够的空间,因此可以从nums1的m-1,nums2的n-1开始从后往前比较,把较大的放在nums1的尾部。 代码如下: public class

2021-01-20 21:27:35 143 1

原创 Leetcode 62 70 78

62.不同路径 题目描述:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径? 思路:本题采用递归的方法思路比较简单,但会超出时间限制。故而采用动态规划的方法。切入点在于,当m和n之中存在一个为1,则只有一种走法。 代码如下: public class Solution { public int UniquePaths(int m,

2021-01-19 20:55:28 96 1

原创 Leetcode 54 59 61

54.螺旋矩阵 题目描述:给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。 思路:按照螺旋矩阵的顺序进行循环即可。(将循环终止条件设置为result.Count=m*n)。 代码: public class Solution { public IList<int> SpiralOrder(int[][] matrix) { int m = matrix.Length; int n = matr

2021-01-18 21:21:17 160

原创 Leetcode43 46 53

43.字符串相乘 题目描述:给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 思路:应用数学中整数相乘的基本规律(类似于列竖式计算),即可得出结果。关键点在于对于得到两位数需要进位的考虑。 代码如下: public class Solution { public string Multiply(string num1, string num2) { if(num1=="0"||num2=="0")

2021-01-18 01:18:37 107

原创 Leetcode23 26 33

23.合并k个升序链表 题目描述:给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 思路:利用第21题合并两个升序链表的函数,先合并链表数组的前两个链表,再与第三个合并,以此类推。 代码如下: /** * Definition for singly-linked list. * public class ListNode { * public int val; * public ListNode next; * publi

2021-01-16 22:00:06 81

原创 Leetcode16 20 21

16.最接近的三数之和 题目描述:给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。 思路:根据第十五题的思路,使用三个索引的方法对数组进行遍历,找到最优解答。 代码如下: public class Solution { public int ThreeSumClosest(int[] nums, int target) { int temp

2021-01-14 19:41:01 92

原创 Leetcode11 14 15

11.盛最多水的容器 *题目描述:给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水 思路:根据短板原理,容器的最大蓄水量由端点值的最小值确定。本题可以使用单个索引的解法暴力解题,但会超出时间限制。故而采取双索引的方法解题,只需从端点值较小的一段向里缩进一格,依次计算蓄水量与当前最大蓄水量进行比较即可。 代码如下

2021-01-13 21:53:55 92

原创 Leetcode789(栈与队列的练习题)

7.整数反转 *题目描述:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 注意: 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。 思路:题解提到使用队列解题,尝试使用栈来解题,道理相同。 代码如下: public class Solution { public int Reverse(int x) { int f = 1; if (

2021-01-12 21:21:11 120

原创 Leetcode245

2.两数相加 题目描述:给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头 思路:将两个链表表示的数字按照数学中两数相加的规则:小于等于九直接写入新链表对应位置,大于九向后进一位。依次计算到最后一位。 代码如下: /** * Definition for singly-linked list. * public class ListNo

2021-01-11 22:34:29 190

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除