![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer刷题
文章平均质量分 51
福尔财斯.包子蔡
这个作者很懒,什么都没留下…
展开
-
20220123剑指offer刷题
剑指 Offer II 014. 字符串中的变位词题目描述:给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的某个变位词。换句话说,第一个字符串的排列之一是第二个字符串的 子串 。我的想法是使用滑动窗口:先用一个字典存放s1中的字符和字符个数,然后用滑动窗口来检验s2中是否有s1的变式。代码如下:public class Solution { public bool CheckInclusion(string s1, string s2) {原创 2022-01-23 23:03:50 · 390 阅读 · 0 评论 -
20220122剑指offer刷题
剑指 Offer II 011. 0 和 1 个数相同的子数组题目描述:给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度。首先,以后再遇到两个数字有相同数量的时候,可以将一个数字换成1,一个数组换成-1,这样通过相加就可以知道两个数字是否数量一致。这样问题就变成了:求最长的连续子数组,使其元素和为0.另外本题还涉及到一个数组常用的方法,就是前缀和字典。当有两个的前缀和相同时,说明这两者之间的数构成一个0和1数量相同的子数组。(注意:字典中只原创 2022-01-22 14:22:48 · 159 阅读 · 0 评论 -
20220118剑指offer刷题
剑指 Offer II 010. 和为 k 的子数组题目描述:给定一个整数数组和一个整数 k ,请找到该数组中和为 k 的连续子数组的个数。这题简单的解法就是遍历代码如下:public class Solution { public int SubarraySum(int[] nums, int k) { int index = 0; for(int left = 0;left<nums.Length;left++){原创 2022-01-21 17:31:12 · 326 阅读 · 0 评论 -
20220120剑指offer刷题(剑指 Offer II 009. 乘积小于 K 的子数组)
结果题目描述:给定一个正整数数组nums和整数k,请找出该数组内乘积小于k的连续的子数组的个数。原理如下:结果如下:可以看到时间上面没啥优势,空间复杂度还好原创 2022-01-21 11:41:00 · 206 阅读 · 0 评论 -
20220120剑指offer刷题(剑指 Offer II 008. 和大于等于 target 的最短子数组)
剑指 Offer II 008. 和大于等于 target 的最短子数组本题重点:滑动窗口设置头和尾两个指针,就可以设置出一个长度可变的窗口本题的原理:然后麻烦的就还是那些边边角角的循环条件,最终代码是:public class Solution { public int MinSubArrayLen(int target, int[] nums) { int left = 0,right = 0; int sum = 0; .原创 2022-01-20 18:31:20 · 172 阅读 · 0 评论 -
20220119剑指offer刷题(剑指 Offer II 007. 数组中和为 0 的三个数)
剑指 Offer II 007. 数组中和为 0 的三个数题目描述:给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a ,b ,c ,使得 a + b + c = 0 ?请找出所有和为 0 且 不重复 的三元组。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/1fGaJU著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。拿到无序数组,首先先将数组进行排序。排序的好处是可以使用有序数列..原创 2022-01-19 22:56:29 · 423 阅读 · 0 评论 -
剑指offer20220117
剑指 Offer II 018. 有效的回文题目描述:给定一个字符串s,验证s是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。本题中,将空字符串定义为有效的回文串。public class Solution { public bool IsPalindrome(string s) { int left = 0 , right = s.Length-1; s = s.ToLower(); while(left&...原创 2022-01-18 10:10:03 · 232 阅读 · 0 评论 -
20220115剑指offer刷题
剑指 Offer II 012. 左右两边子数组的和相等题目描述:给你一个整数数组 nums ,请计算数组的 中心下标 。数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。如果中心下标位于数组最左端,那么左侧数之和视为 0 ,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。如果数组有多个中心下标,应该返回 最靠近左边 的那一个。如果数组不存在中心下标,返回 -1 。分析:左侧数的和和右侧数的和要一样,都等于总和的一半 代码如下:原创 2022-01-15 19:06:46 · 73 阅读 · 0 评论 -
剑指offer刷题Day7(C#)
剑指 Offer II 002. 二进制加法给定两个 01 字符串a和b,请计算它们的和,并以二进制字符串的形式输出。输入为非空字符串且只包含数字1和0。原创 2022-01-06 15:41:05 · 306 阅读 · 0 评论 -
Leetcode刷题——剑指Day5(C#)
剑指 Offer 32 - I. 从上到下打印二叉树题目描述:从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如:给定二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回:[3,9,20,15,7]做这题之前,先补一点C#里面队列queue和列表list的知识Queue是队列,即“先进先出”的一个数据结构,数据从一端进入,从另外一端输出新建队列的方法:Queu...原创 2021-12-01 23:52:20 · 483 阅读 · 0 评论 -
Leetcode刷题——剑指Day4(C#)
剑指 Offer 50. 第一个只出现一次的字符题目描述:在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。思路一:用字典。将字符串中的每个字符以及它们出现的次数都记录下来,然后输出第一个次数为1的数,没有的话就输出单空格ps:这里有一个小细节,在C#中双引号(“ ”)引出的是字符串string,单引号(‘ ’)引出的是字符char代码如下:public class Solution { public char FirstUniqCha原创 2021-12-01 22:14:58 · 267 阅读 · 0 评论 -
Leetcode刷题——剑指Day4(C#)
剑指 Offer 04. 二维数组中的查找题目描述:在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。原理:从右原创 2021-12-01 19:29:19 · 86 阅读 · 0 评论 -
Leetcode刷题——剑指Day3(C#)
剑指 Offer 03. 数组中重复的数字题目描述:找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载原创 2021-11-24 13:25:33 · 96 阅读 · 0 评论 -
Leetcode刷题——剑指Day2(C#)
剑指 Offer 05. 替换空格题目描述:请实现一个函数,把字符串s中的每个空格替换成"%20"。空格只有一个字符,但是要替换的是“%20”,是三个字符,我最先想到的是用栈的方式,代码如下:public class Solution { public string ReplaceSpace(string s) { char[] SA = s.ToCharArray(); Stack<char> StackSA = new Stack&l..原创 2021-11-22 14:56:58 · 93 阅读 · 0 评论 -
Leetcode刷题——剑指Day1(C#)
剑指 Offer 06. 从尾到头打印链表题目描述:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。本来想得好复杂,还想着先用递归把链表倒过来再输出,却忽略了栈的妙处。栈,它是一个“后进先出”的结构。所以只遍历一遍,把链表的值压进栈中,再按顺序输出栈的内容就可以。代码如下:/** * Definition for singly-linked list. * public class ListNode { * public int val; *原创 2021-11-18 16:24:19 · 410 阅读 · 0 评论 -
剑指offer刷题Day1(C#)
剑指 Offer 09. 用两个栈实现队列题目描述:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead操作返回 -1 )来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof著作权归领扣网络所有。商业转载请联系官方.原创 2021-11-22 10:46:45 · 151 阅读 · 0 评论