牛客[编程题] hj57 高精度整数加法-编程思维
HJ57 高精度整数加法 中等 通过率:36.15% 时间限制:1秒 空间限制:32M 描述 输入两个用字符串 str 表示的整数,求它们所表示的数之和。 数据范围: 1 \le len(str) \le 10000 \1≤len(str)≤10000 输入描述: 输入两个字符串。保证字符串只含有'0'~'9'字符 输出描述: 输出求和后的结果
morethink program
题目 难度 要点 删除有序数组中的重复项 ● 快指针与慢指针值不同,那么应该将值放在慢指针下一位 移除元素 ● 快指针对应值若不需移除,那么应该将值放在当前慢指针 最长回文子串 ● 以当前位置或者当前位置及相邻位置扩散寻找回文子串 删除有序数组中的重复项 class Solution { public int removeDuplicates(int[] nu
题目 难度 要点 回文链表 ● 栈或者后半段反转 栈 递归 class Solution { ListNode node; public boolean isPalindrome(ListNode head) { node = head; return traverse(head); } public bo
题目 难度 要点 分隔链表 ● 快慢指针:不用两个新链表拼接,使用原地修改 合并K个升序链表 ● 最小堆:类ProirityQueue的使用 环形链表 ● 快慢指针:相遇有环 环形链表II ● 快慢指针:入环第一个节点 分隔链表 题目要求按原顺序,以x值将小的放链表前半段,其他的放链表后半段。很容易想到一种解法,新开两条链表分别存放,最后将两条链表合并。题目难度
思路 LRU算法,访问/更新/插入都会将数据置于队尾(假设队头淘汰)。 看3种情况的变化: 插入:简单置于队尾即可。 更新:删除原有节点,新增节点置于队尾。 访问:将原节点提至队尾。 除了插入只需要简单接到链表尾部以外,更新和访问都是可能操作链表中间的,所以自然地就需要引入Map来快速找到对应节点。 并且无论是更新的删除原有节点还是访问的将原节点提至队尾,都需要在链表中间删除节点,所以需要双
1:两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 2 <= nums.length <= 104 -109 <= nums[i] <= 109 -1
一、寻找两个等长有序序列的中位数 1.1 问题描述 对于一个长度为n的有序序列(假设均为升序序列),a[0...n-1],处于中间位置的元素称为a的中位数,现要求两个等长有序序列合并的中位数。 1.2 求解思路 对于求两个有序序列a[],b[]的中位数,首先考虑到二路归并后求其中位数c[m](m=(s+t)/2,s为序列左侧编号,t为序列右侧编号,对于偶数位中位数,只考虑下中位),但时间
一、幂集问题 1.1 问题描述 对于给定的正整数n(n>=1),求1-n构成的集合的幂集(即由1-n的集合中所有自己构成的集合,包括全集和空集)。 1.2 求解思路与代码 1、直接穷举法:将1-n存放到数组a中,用b数组中1-n的元素来标记(0为不在当前集合,1为在当前集合),此时便可将问题转化为:例如,n=3,幂集便是000-111每个数中1对应的数字所组成的集合,只需要将b数组从0
约瑟夫问题是一个著名问题:N个人围成一圈,第一个人从1开始报数,报M的将被杀掉,下一个人接着从1开始报。如此反复,剩下最后一个人,求最后的胜利者。 例如只有三个人,把他们叫做A,B,C。 从A开始报数,把报2的杀掉。 - 首先A报数,他报1,逃过一劫 - 然后B报数,他报2,真惨,他被杀了 - 然后C继续报数,他报1,逃过一劫 - 接着轮到A报数,他报2,躲得过初一躲不过15,他被杀了
一般情况下,我们要实现值替换的时候需要引入一个中间变量,以int为例代码如下 int a = 10, b = 20; // 中间变量 int temp; temp = a; a = b; b = temp; // a = 20, b = 10 但是我们可以通过异或来简化代码,省略中间变量的使用,代码如下 int a = 10, b = 20; a ^= b ^ (b = a); 执行结果如下
图 准备找实习了,把忘了的东西从头捡一捡 基本实现 大一时候有个特别蠢的问题,一直老想为什么不内置图的实现,现在想想真是蠢到家了…… Go语言实现无向无环图 import "fmt" //Implment by adjacency matrix type graphadjMat struct { vertices []int adjMat [][]int } func newGrap
一、双指针 27. 移除元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 package leetCodePractice; /** * @Date 2023/9/11 17:
🔗题目链接 ✈题目描述: 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 ⌊ n/2 ⌋表示n/2结果向下取整。 🚆数据范围: n == nums.length 1 <= n <= 5 * 104 -109 <= nums[i] <= 10
💎题目来源 💎题目描述: 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m