
算法题
主要是经典算法题
fzzfrjf
这个作者很懒,什么都没留下…
展开
-
牛客NC77 调整数组顺序使奇数位于偶数前面(一)
牛客NC77原创 2022-06-07 22:46:02 · 190 阅读 · 0 评论 -
Leetcode37题,解数独
编写一个程序,通过填充空格来解决数独问题。数独的解法需 遵循如下规则:数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)数独部分空格内已填入了数字,空白格用 ‘.’ 表示。主要思想的话就是先创建三个数组来存储每一列每一行每一个块这个字符出现的情况,遍历数独,将每个位置存在的数存入数组,将’.‘所在的行列存入一个数组集合。之后调用递归,来对每一个’.'位置的字符进行尝试,如果尝试失败,则进行回溯。原创 2022-05-05 21:30:46 · 121 阅读 · 0 评论 -
寻找下一个更大序列
题目:整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。例如,arr = [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。整数数组的 下一个排列 是指其整数的下一个字典序更大的排列。更正式地,如果数组的所有排列根据其字典顺序从小到大排列在一个容器中,那么数组的 下一个排列 就是在这个有序容器中排在它后面的那个排列。如果不存在下一个更大的排列,那么这个数组必须重排为字典序最小的排列(即,其元素按升序排列)。例如,arr原创 2022-05-05 21:27:02 · 134 阅读 · 0 评论 -
Leetcode34题,寻找子元素位置
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。要求时间复杂度为logn。主要思想的话就是寻找大于等于target值在数组中出现的位置,之后再寻找target+1出现的位置,进行判断即可,题解如下:class Solution { public int[] searchRange(int[] nums, int target) { int l = se原创 2022-05-05 21:29:39 · 85 阅读 · 0 评论 -
牛客NC3 链表中环的入口结点
牛客NC3 链表中环的入口结点题目如下:主要思想就是首先利用快慢指针判断是否有环,如果有环,再根据下面的思想让快指针重头开始走,慢指针继续走,走到相遇就是环入口结点的地方:代码如下:public class Solution { public ListNode EntryNodeOfLoop(ListNode pHead) { ListNode ft = pHead; ListNode fast = pHead; ListNode slo原创 2022-05-05 21:31:54 · 399 阅读 · 0 评论 -
KMP算法
KMP算法指的是字符串模式匹配算法,问题是:在主串T中找到第一次出现完整子串P时的起始位置。kpm算法看了几天勉强看懂,但是过了几天就完全忘了当时怎么想的,所以直接背吧!class Kmp{ public int findSubString(String t,String p){ int[] next = getNext(p); for(int i = 0, j = 0; i < t.length();i++){ while(j &g原创 2022-05-05 21:28:30 · 87 阅读 · 0 评论