算法机试
文章平均质量分 77
hellolianhua
这个作者很懒,什么都没留下…
展开
-
算法:动态规划
动态规划的规则1.状态定义2.固定住不确定的因素(例如1.确定连续子数组,我们可以选择固定子数组的末尾元素2.台阶确定最后一阶台阶),是得状态转移变得容易3.求解过程中每个子问题只求解一次,无后效性。原创 2022-12-27 21:45:00 · 201 阅读 · 0 评论 -
算法:二叉树
链接:https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof。在遍历二叉树的时候,从本题我们可以知道我们使用的是层遍历,层遍历需要借助一个队列,去记录下一层的节点。从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。我们需要构建具体的二叉树,从根开始root,然后分别将节点连接。给定二叉树: [3,9,20,null,null,15,7],来源:力扣(LeetCode)原创 2022-12-21 18:00:10 · 374 阅读 · 0 评论 -
算法:链表
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。输入: 1->2->3->4->5->NULL。输出: 5->4->3->2->1->NULL。以下是链表节点的定义。原创 2022-12-13 14:14:32 · 94 阅读 · 0 评论 -
算法:栈和队列的设计
定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。链接:https://leetcode.cn/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof。(添加直接在一个栈中完成,删除队头元素,需要将元素从栈1转移到栈2,删除栈2,栈顶的元素,完成删除队头的操作)3.删除对头元素:在这里队头元素为3,删除队头元素,并返回删除的元素值,所以返回3。--> 返回 -2.原创 2022-12-12 14:15:08 · 411 阅读 · 0 评论 -
算法前缀和
给定一个整数数组和一个整数 k ,请找到该数组中和为 k 的连续子数组的个数。示例 1:输入:nums = [1,1,1], k = 2输出: 2解释: 此题 [1,1] 与 [1,1] 为两种不同的情况示例 2:输入:nums = [1,2,3], k = 3输出: 2来源:力扣(LeetCode)链接:https://leetcode.cn/problems/QTMn0o著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 按照之前的理解,我使用了滑动窗口的算法,给出的两个原创 2022-12-06 10:48:12 · 221 阅读 · 0 评论 -
算法:滑动窗口
找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。输入:target = 11, nums = [1,1,1,1,1,1,1,1]这时候 target >sum,同时记录长度为4,start=0;输入:target = 7, nums = [2,3,1,2,4,3]输入:target = 4, nums = [1,4,4]解释:子数组 [4,3] 是该条件下的长度最小的子数组。原创 2022-12-02 20:13:01 · 307 阅读 · 0 评论 -
算法:双指针
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!= k ,同时还满足 nums[i] + nums[j] + nums[k] == 0。输入:numbers = [1,2,4,6,10], target = 8。输入:numbers = [-1,0], target = -1。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]原创 2022-12-01 17:41:27 · 86 阅读 · 0 评论 -
算法: C# 中将 Dictionary 集合用作 Hashmap 等价类型
给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次。请你找出并返回那个只出现了一次的元素。空间复杂度:O(n)。哈希映射中包含最多⌊n/3⌋+1 个元素,即需要的空间为 O(n)。链接:https://leetcode.cn/problems/WGki4K。两个实现代码的思路是一样的,但是代码二的效率比代码一的效率高。输入:nums = [0,1,0,1,0,1,100]时间复杂度:O(n),其中 n是数组的长度。输入:nums = [2,2,3,2]原创 2022-11-30 11:33:02 · 519 阅读 · 0 评论 -
算法:位运算
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。给定两个 01 字符串 a 和 b ,请计算它们的和,并以二进制字符串的形式输出。输入:num1 = "11", num2 = "123"输入:num1 = "456", num2 = "77"输入: a = "1010", b = "1011"输入:num1 = "0", num2 = "0"输入: a = "11", b = "10"来源:力扣(LeetCode)输出: "10101"2.2 思路以及代码。原创 2022-11-30 01:09:25 · 67 阅读 · 0 评论 -
算法:数组
给定一个整数数组和一个整数k,请找到该数组中和为k的连续子数组的个数。示例1输入输出2解释此题[1,1]与[1,1]为两种不同的情况示例2输入输出2来源力扣(LeetCode)链接https著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。...原创 2022-07-21 17:04:54 · 218 阅读 · 0 评论 -
算法:整数
给定两个 01 字符串 a 和 b ,请计算它们的和,并以二进制字符串的形式输出。输入为 非空 字符串且只包含数字 1 和 0。示例 1:输入: a = "11", b = "10"输出: "101"示例 2:输入: a = "1010", b = "1011"输出: "10101"来源:力扣(LeetCode)链接:https://leetcode.cn/problems/JFETK5输入: a = "111", b = "10"n=3遍历for循环,i=0,i.........原创 2022-06-14 17:34:27 · 197 阅读 · 0 评论 -
算法:链表
给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。数据范围: 0≤n≤1000 要求:空间复杂度 O(1) ,时间复杂度 O(n) 。如当输入链表{1,2,3}时,经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。1->2->3变成3->2->1原题目:反转链表_牛客题霸_牛客网将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转,要求时间复杂度 O(n),空间复杂度 O(1)。例如:给出的链表原创 2022-06-09 17:36:59 · 127 阅读 · 0 评论 -
算法:动态规划
1.杨辉三角给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。示例 1:输入: numRows = 5输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例2:输入: numRows = 1输出: [[1]]1.1解题思路与代码1 1 1 1 2 1 ..原创 2022-05-25 00:23:08 · 82 阅读 · 0 评论 -
机试题笔记
第一题:整数对最小和1.1题目描述:给定两个整数数组array1、array2,数组元素按升序排列。假设从array1、array2中分别取出一个元素可构成一对元素,现在需要取出k对元素,并对取出的所有元素求和,计算和的最小值注意:两对元素如果对应于array1、array2中的两个下标均相同,则视为同一对元素。输入描述:输入两行数组array1、array2,每行首个数字为数组大小size(0 < size <= 100);0 < array1[i] <=原创 2021-07-17 23:20:26 · 4922 阅读 · 1 评论 -
牛客网机试题
第一题:反转链表1.1题目描述输入一个链表,反转链表后,输出新链表的表头。输入:{1,2,3}返回值:{3,2,1}具体如图:1.2解题思路需要三个指针:pre,p,q去完成一个头节点插入1.3代码java/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; ..原创 2021-07-12 04:59:21 · 1268 阅读 · 0 评论 -
leetcode算法21天:第一天
第一题:二分查找题目描述:给定一个n个元素有序的(升序)整型数组nums 和一个目标值target ,写一个函数搜索nums中的 target,如果目标值存在返回下标,否则返回 -1。解题代码:int search(int* nums, int numsSize, int target){ if(numsSize>0){ int low=0; int high=numsSize-1; int n=fa...原创 2021-07-07 20:15:13 · 150 阅读 · 0 评论 -
反序数
题目描述设N是一个四位数,它的9倍恰好是其反序数(例如:1234的反序数是4321)求N的值代码及想法采用枚举的暴力解决办法#include#includeusing namespace std;//求反序数的方法int Reverse(int number){int reverseNumber=0;while(number!=0){reverseNumber*=10;reverseNumber+=number%10;number/=10;}return reverseNu原创 2021-02-18 22:26:19 · 1747 阅读 · 0 评论 -
机试:模拟
一,题目描述有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?输入描述:输入文件最多包含10组测试数据,每个数据占一行,仅包含一个正整数n(1<=n<=10原创 2021-02-06 20:16:58 · 145 阅读 · 0 评论 -
2021-02-04最大公共子串的长度
华为算法:最大公共子串的长度一,题目描述给定两个只包含小写字母的字符串,计算两个字符串的最大公共子串的长度。注:子串的定义指一个字符串删掉其部分前缀和后缀(也可以不删)后形成的字符串。输入描述:输入两个只包含小写字母的字符串输出描述:输出一个整数,代表最大公共子串的长度示例1输入asdfaswerasdfaswer输出6二,想法以及代码简单的想法就是先确定俩个字符串开始比较的位置,然后同时后移比较公共子串的长度#include..原创 2021-02-04 21:35:09 · 221 阅读 · 1 评论 -
机试
华为机试题目描述接受一个只包含小写字母的字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)输入描述:输入一行,为一个只包含小写字母的字符串。输出描述:输出该字符串反转后的字符串。示例1输入abcd输出dcbaC语言代码#include<stdio.h>int main(){//创建一个字符数组char a[1000]={};//创建两个指针,一个从前往后遍历数组,一个从后往前遍历数组int i=0,j=0;char temp;scanf(原创 2021-01-19 09:56:44 · 385 阅读 · 0 评论