王道中数据结构的排序算法

插入排序:1.1. 希尔排序:void ShellSort(ElemType A[],int n) { int i,j,dk; for (dk = n / 2; dk >= 1; dk = dk / 2) for (i = dk + 1; i <= n; ++i) if (A[i]<A[i-dk]) { A[0] = A[i]; for (j = i - dk; j > 0 && A[0] < A[j]; j -= d.
分类: 其他 发布时间: 11-21 09:13 阅读次数: 0

三数之和(C++) , 三数最近的和,四数之和

题目描述:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/3sum著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2. 解题思路:我们知道,对于数据的处理来说,有序的数据的处理比无序数据的处理简单很多。所以先对所给的数.
分类: 其他 发布时间: 11-21 09:13 阅读次数: 0

电话号码的字母组合(c++ 回溯算法)

题目:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。思路:涉及到组合问题的时候一般都是采用回溯算法,这题相当于使用DFS的方法,每走一条路线最终积累的字符串就是得到的一个结果。代码: //涉及到组合的时候 ,使用 回溯算法 map<char,string> Map = { {'2',"abc"},{'3',"def"},{'4',"ghi"}, {'5',"jkl"},{'6',"mno"},{'7',"pqrs".
分类: 其他 发布时间: 11-21 09:13 阅读次数: 0

判断二叉树是否是平衡二叉树(C++)

第一种方法:采用自底向上的递归方法int height( TreeNode* root){ if(root == NULL){ return 0; }else{ int leftheight = height(root->left); int rightheight = height(root->right); if(leftheight == -1 || rig.
分类: 其他 发布时间: 11-21 09:13 阅读次数: 0

递归方法(判断二叉树是否是对称二叉树)

递归的函数要干什么?函数的作用是判断传入的两个树是否镜像。输入:TreeNode left, TreeNode right输出:是:true,不是:false递归停止的条件是什么?左节点和右节点都为空 -> 倒底了都长得一样 ->true左节点为空的时候右节点不为空,或反之 -> 长得不一样-> false左右节点值不相等 -> 长得不一样 -> false从某层到下一层的关系是什么?要想两棵树镜像,那么一棵树左边的左边要和二棵树右边的右边镜像,一棵树左
分类: 其他 发布时间: 11-21 09:12 阅读次数: 0

删除链表的倒数第N个结点(C++一次遍历)

题目:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗?2. 解题思路:我采用的是双指针的方式,两个指针之间相隔n-1个元素,当后面的那个结点的next域为空的时候,此时p结点指向倒数第n个结点的前一个结点,直接进行删除,要注意的是链表有n个结点而要删除倒数第n个结点的情况(解决方法见代码)。代码:class Solution {public: ListNode* removeNthFromEnd(ListNode* head, .
分类: 其他 发布时间: 11-21 09:12 阅读次数: 0

c++进行socket编程时出现导不了socket包的情况时的解决方法

问题描述:2,codeblocks的解决方法:在Other linker options中添加-lwsock32DEV的解决方法:也是在compliar Options 中进行设置tips:
分类: 其他 发布时间: 11-21 09:12 阅读次数: 0

两两交换链表中的结点(c++)

题目:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。2. 解题思路:解这个题的过程还算波折,我之前准备就用基本的一趟遍历的方法来写这个题,后来因为要用的指针太多了我自己都搞混了,所以选择了一种比较容易理解的方法。因为是要交换相邻的值,所以我想的是进行一次遍历,按顺序把链表拆分成两个链表,再按照与拆分时候相反的顺序来进行组合,这样来实现相邻的交换。3. 解题代码:/** * Definition for singly.
分类: 其他 发布时间: 11-21 09:12 阅读次数: 0

对于要对数组的长度奇偶性处理的方法

为了简化代码,不分情况讨论,我们使用一个小trick,我们分别找第 (m+n+1) / 2 个,和 (m+n+2) / 2 个,然后求其平均值即可,这对奇偶数均适用。加入 m+n 为奇数的话,那么其实 (m+n+1) / 2 和 (m+n+2) / 2 的值相等,相当于两个相同的数字相加再除以2,还是其本身。...
分类: 其他 发布时间: 11-21 09:11 阅读次数: 0

下一个排列(c++)

题目:实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列(即,组合出下一个更大的整数)。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。2. 解题思路:我是按照leetcode官方的解题方法进行解的,自己尝试了几个解法都没ac就放弃了。官方的解题方法我觉得非常巧妙,从后往前找到nums中第一个比它后一个大的数,那么它的后一个数就是要被交换的,然后再从后往前找第一个比nums[i-1] 大的数与之交换,然后对nums[i]到nums.end.
分类: 其他 发布时间: 11-21 09:11 阅读次数: 0

搜索旋转排序数组(c++)

题目:整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。给你 旋转后 的数组 nums 和一.
分类: 其他 发布时间: 11-21 09:11 阅读次数: 0

整理字符串(c++)将相邻的互为大小写的字符从串中删除

题目描述:给你一个由大小写英文字母组成的字符串 s 。一个整理好的字符串中,两个相邻字符 s[i] 和 s[i+1],其中 0<= i <= s.length-2 ,要满足如下条件:若 s[i] 是小写字符,则 s[i+1] 不可以是相同的大写字符。若 s[i] 是大写字符,则 s[i+1] 不可以是相同的小写字符。请你将字符串整理好,每次你都可以从字符串中选出满足上述条件的 两个相邻 字符并删除,直到字符串整理好为止。请返回整理好的 字符串 。题目保证在给出的约束条件下,测试样.
分类: 其他 发布时间: 11-21 09:11 阅读次数: 0

在排序数组中查找元素出现的第一个位置和最后一个位置(c++)

题目描述:Given an array of integers nums sorted in ascending order, find the starting and ending position of a given target value.If target is not found in the array, return [-1, -1].You must write an algorithm with O(log n) runtime complexity.来源:力扣(Leet.
分类: 其他 发布时间: 11-21 09:10 阅读次数: 0

LeetCode刷题之外观数列

题目:给定一个正整数 n ,输出外观数列的第 n 项。「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。你可以将其视作是由递归公式定义的数字字符串序列:countAndSay(1) = “1”countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/count-and-say著作权归领扣网络所有。商业转载请联系.
分类: 其他 发布时间: 11-21 09:10 阅读次数: 0

vscode在独立终端运行终端出现乱码的问题

出现的原因:VSCode 与 cmd 两者之间的编码方式不一样:VSCode 默认是 utf-8 编码,而在中国地区下的 Windows 的 cmd 默认是 GBK 编码。解决方法:vscode中文乱码问题解决方法
分类: 其他 发布时间: 11-21 09:10 阅读次数: 0

LeetCode刷题之搜索插入位置(c++)

题目:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。2. 思路:因为这是一个有序的数组,首先想到的就是二分法,并且里面没有重复的元素,这样用二分查找返回的值就是一个固定的数3. 代码:class Solution {public: int searchInsert(vector<int>& nums, int target) { .
分类: 其他 发布时间: 11-21 09:09 阅读次数: 0

LeetCode刷题之组合总和

题目:给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/combination-sum-ii著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2. 解题思路:看到这种需要不断组合来进行解决的题目,最直接的思路就是使用DFS,通俗.
分类: 其他 发布时间: 11-21 09:09 阅读次数: 0

Leetcode刷题之字符串相乘

题目:给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。解题思路:这种题目就是找规律,解题的关键钥匙就是:num1的第i位(高位从0开始) 和 num2 的第j位 相乘的结果在乘积中的位置是([i+j,i+j+1]),这样我们就可以用两个循环,从高位(index大的位置)开始,依次相乘得到temp,应为i,j位置的乘积结果保存的位置是[i+j,i+j+1],所以先用temp加上mul[i+j+1] 位置的值,这样就能实现进.
分类: 其他 发布时间: 11-21 09:09 阅读次数: 0

M1/M1Pro/M1Max芯片MacBook Pro安装Windows 11正式版虚拟机

苹果自研芯片的,13寸,14寸,16寸的MacBook Pro,只要是M1/M1Pro/M1Max芯片,都可以用此教程安装Windows 11虚拟机。测试系统:MacOS Monterey 12.0.1测试电脑:M1Pro芯片14寸MacBook Pro安装教程:1、本站下载Parallels Desktop 17软件,版本17.1.0 (51516)下载地址:Parallels Desktop 17 for Mac(pd虚拟机)这里说一下,本站不光有Mac软件,还有各类插件素材
分类: 其他 发布时间: 11-21 09:09 阅读次数: 0

Mac基础知识分享:Mac电脑如何设置屏幕保护程序?

电脑中的屏幕保护程序,是保护电脑文件安全的功能之一,也是用户展现自己个性的地方。如何在Mac电脑中设置自己将自己喜欢的图片或照片设置成屏保呢?分享一下Mac电脑屏幕保护程序设置教程。1、打开Mac系统偏好设置,2、在系统偏好设置界面,点击“桌面与屏幕保护程序”,3、然后点击“屏幕保护程序”,4、在左边的图片列表中,选择自己喜欢的图片,5、如果系统里的都不喜欢,可以点击图片下边的“来源”,选择“照片图库”来自定义图片。6、在最下边,还可以设置屏保出现的时间。以上就
分类: 其他 发布时间: 11-21 09:08 阅读次数: 0