go-string源码阅读
GO string源码阅读及详解在刷leetcode过程中碰到了使用string的题,发现自己还没专门看够Go中的string使用及实现等,故专门参考网络及MarsCode等产出了本篇文章 Q:如何在GO中定义string?A_1:采用双引号赋值字符串,其中转义字符会进行转义(\t \n等 12str := "hello\tstring\n"//output: hello string A_2:采用反引号定义字符串,转义字符不会进行转义 12str := `hello\tstring\n`//output: hello\tstring\n tips:使用反引号可创建多行字符串 1234str := `hello string`//output: hello// string Q:string底层? 基于Go SDK 1.23.0 在源码包中src/runtime/string.go stringStruct定义了string的数据结构 1234type stringStruct struct { str...
go-interface详解
Go interface详解及源码阅读太晚了睡了先,接着写下明天计划 详细翻看interface相关,相比其与之前用的Java有何特色、异同? 看源码,详细理解分享 append、make等 ~~Go基本架构这个之前没注意看过,得看看;Java还了解一些,Go确实不熟~~~~ お休み interface定义Go中并没有显式的继承,大致都是通过匿名字段等实现的 12345678910111213141516171819type human struct{ int age}type man struct{ human //直接将父struct写在子struct前,这就是隐式的继承 //相比之下 Java中使用了extend关键字 int height}man := new(man)man.age = 23//可直接调用修改man的继承来的age属性man.height = 180fmt.Println(man.age)fmt.Println(man.height)//output:...
笔试面试记录
...
leetcode-go-09
leetcode热题100-Go解-2025.4.1090/100 终于要入门了 笔试记录等维护明天再做吧 累了 4.寻找两个正序数组的中位数给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (m+n)) 。 示例 1: 123输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2 示例 2: 123输入:nums1 = [1,2], nums2 = [3,4]输出:2.50000解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5 解一 O(log(m+n)) 思路 官方题解 等同于找到第k小的元素,k = (m + n + 1) / 2 逐步排除小数直到排除了k个后自然得到 解二 更优解 O(log(min(m, n)))...
leetcode-java-04
leetcode热题100-Java解-2025.4.769/100 74. 搜索二维矩阵给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。 每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。 示例略 写完前面的这题纯水题 从右上或左下入手就是个二叉搜索树 解一 dfs 12345678910111213141516171819public boolean searchMatrix(int[][] matrix, int target) { int m = matrix.length; int n = matrix[0].length; return dfs(matrix, target, m - 1, 0); } private boolean dfs(int[][] matrix, int target, int i, int j) { ...
写于N-Queen后 回溯小结
写于N-Queen后 回溯小结回溯算法,关键就在题面上,我们是反向来捋逻辑的,而不是正向 最先考虑递归的结束条件,即得到什么结果时,会将path加入结果集 简单的形容,回溯算法就是特殊情况下的深度优先算法 大多使用深度优先算法时是遍历找到某个节点 回溯作为其中的小部分,它的目标是找到一条达成目标的路径 可以看做同样是对一个满N叉树进行深度优先遍历 枝干节点代表每一步做出的选择 叶子节点代表依此路径选择的最终情形 从根节点到叶子节点的所有情况都会遍历到 无论满不满足,能不能加入结果集,都会return 只是只有满足要求条件的会加入结果集而已 一般的回溯函数形式 123456789101112131415161718192021222324252627func backtrack(args...){ if(flag){ result = append(result, path...) }else { // 一般,我们会在此时,对输入的参数进行一定的判断和调整 doSomeThing() ...
leetcode-java-03
leetcode热题100-Java解-2025.4.665/100 感觉好像会回溯了 next 动态规划 贪心算法 数据结构 以及记得背八股文 207.课程表你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] = [ai, bi] ,表示如果要学习课程 ai 则 必须 先学习课程 bi 。 例如,先修课程对 [0, 1] 表示:想要学习课程 0 ,你需要先完成课程 1 。 请你判断是否可能完成所有课程的学习?如果可以,返回 true ;否则,返回 false 。 示例 1: 123输入:numCourses = 2, prerequisites = [[1,0]]输出:true解释:总共有 2 门课程。学习课程 1 之前,你需要完成课程 0 。这是可能的。 示例 2: 123输入:numCourses = 2, prerequisites =...
leetcode-java-02
leetcode热题100-Java解-0257/100 继续复习Java语法 437.路径总和 III给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。 示例 1: 123输入:root = [10,5,-3,3,2,null,11,3,-2,null,1], targetSum = 8输出:3解释:和等于 8 的路径有 3 条,如图所示。 示例 2: 12输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22输出:3 思路: 题目中提到,路径方向必须是向下的 采用前缀和 123456789101112131415161718192021222324private int ans = 0;public int pathSum(TreeNode root, long targetSum){ ...
leetcode-java-01
leetcode热题100-Java解-2025.4.2主要是复习下Java语法,顺带写下题 78.子集给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1: 12输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]] 示例 2: 12输入:nums = [0]输出:[[],[0]] 回溯算法 123456789101112131415161718192021public static List<List<Integer>> subsets(int[] nums) { List<List<Integer>> result = new ArrayList<>(); if (nums == null || nums.length == 0){ return result; ...
leetcode-go-08
leetcode热题100-GO解-2025.4.149/100 简单广撒网写几题,然后复习下基本语法 基本语法真忘了( 108.将有序数组转换为二叉搜索树水题 12345678910111213func sortedArrayToBST(nums []int) *TreeNode { if len(nums) == 0 { return nil } // 取数组中间元素作为根节点 mid := len(nums) / 2 root := &TreeNode{Val: nums[mid]} // 递归构建左子树 root.Left = sortedArrayToBST(nums[:mid]) // 递归构建右子树 root.Right = sortedArrayToBST(nums[mid+1:]) return root} 94.二叉树的中序遍历水题 前序/中序/后序 指 前根序/中根序/后根序...