tml文件即超文本标记语言文件文档,是扩展名、后缀名为html的文件。超文本标记语言的结构包括头部分(Head)、和主体部分(Body),其中头部(head)提供关于网页的信息,主体(body)部分提供网页的具体内容。html文件能够被多种网页浏览器读取,传递。我们可以使用电脑上自带的记事本进行编辑htm文件。那么html文件删除如何恢复?
通常情况下当您从电脑存储设备中删除html文件时,该html文件会保存在回收站中。 可以根据需要通过单击还原选项将其还原。 但是不好运的情况下,如果您清空回收站或文件未经过回收站、或使用永久删除键Shift + Delete将文件删除怎么恢复呢?我们可以通过使用数据恢复软件来恢复。
html文件删除恢复步骤如下:
1、首先到官网下载并安装好云骑士数据恢复软件(注意:软件不能安装在丢失盘中),打开云骑士数据恢复软件,根据需要选择恢复功能,这里选择场景模式下的误删除文件。
2、选择好以后选择需要恢复数据的分区,如果是外接设备则可以将它插入电脑中,或者通过读卡器插入电脑,点击开始扫描。
3、扫描结束以后,你会发现有很多数据,这时我们可以通过文件类型进行查找,这里勾选其他文件类型,然后找到了需要的html格式文件。
因为文件丢失后有可能会因各种原因受损,所以遵循先预览再恢复原则,通过预览模式判断文件是否正常再进行恢复。对于无法预览或者不支持预览的是无法判断数据是好的还是坏的,只能恢复出来才能进行查看的。
4、接着在需要恢复的html文件前面进行勾选,选择好以后点击立即恢复按钮。
5、弹出设置文件路径窗口,将文件存储在安全区域中(如果存储盘不够内存,可以外接其他设备进行存储),点击确定按钮。
6、耐心等待文件导出完成,点击查看即可查看恢复出来的html文件了。
知识普及:
导致html文件丢失常见几种原因:
采用来源于Internet的各种各样没经验证的第三方应用程序也许会使您的html文件遭遇风险。
偶尔在下载那些应用程序时,某些恶意病毒也许会进入系统并破坏html文件结构,亦或它们也许会删除桌面上的所有html文件,因此致使大量数据丢失。
在重新分区或调整硬盘大小时,那些html文件也许会遗失。在重新分区时,一个重大的错误也会删除存储了所必需文件的分区,例如DOC、PPT、XLSX和HTML。
总结:以上就是html文件删除恢复教程了,如果在软件使用过程中有不懂的问题,可以咨询专业的在线客服人员为您解答~
本文来自 yqssjhf.com>> 创作不易,转载请注明出处。
1、新建数组法
2、同一个数组删除法
3、利用object/map/set去重法
4、先排序再移除法
5、Filter与indexOf法
1、新建数组法,即新建立一个数组,用来存储结果,将原数组项逐个与新数组的成员进行比较,如果新数组中不存在就添加到新数组。时间复杂度:O(n^2)
图1-新建数组去重法
2、同一个数组删除法,两个循环,将数组中的每个元素与其他未与自己比较的元素进行比较,遇到有重复时,将自己删除,并进入下一个循环。这种方式相对效率较高,也不用新数组占用空间。时间复杂度:O(logN)
图2-数组删除去重复从后往前遍历
图3-数组删除去重复从前往后遍历
注意:若是从前往后则需要对length和i进行--处理,因为数组的长度减少了。
3、利用object/map/set去重法,利用数据结构key是唯一的特性和set里不允许重复value来去重,这种方式很讨巧,但是效率也不高。时间复杂度:O(n^2)。
图4-数组去重复Object法
图5-数组去重复Map与Set法
4、先排序再移除法,先将数组排好序,然后从后至前或从前往后逐个与下一个进行比较,如果遇到相同时就删除当前项,进下一个比较。时间复杂度:O(n^2)
图6-数组去重先排序再删除法,自后往前
图7-数组去重先排序再删除法,自前往后
自前往后遍历也要注意相同的问题,即length与i要相应减少。
5、Filter结合IndexOf法,利用indexOf返回数组中第一次出现目标项下标的特点,当内容相同且下标相同表示的就是是不重复的新项,就追加到新数组中,如果查找到但下标不相说明重复了,跳出进行下一个比较。时间复杂度:O(n^2)
最简的方式:a.filter((item, i) => i === a.indexOf(item)),这种写法极简,但是效率不高,不建议这么用。具体原理实现如下:
图8-数组去重indexOf法,continue略微优化
图8-数组去重模拟indexOf法,break略有优化
这两种都比极简法好,极简法是没做任何优化,但因为filer与indexOf都是原生的方法,效率也还可以。
附:filter与indexOf实现源码:
家好,很高兴又见面了,我是姜茶的编程笔记,我们一起学习前端相关领域技术,共同进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力
铁子们!从 2024/07/26 开始,我们进入算法专题篇的学习啦 (⚠️ 没特别说明的情况下复杂度仅指时间复杂度)。学习计划如下:
1️⃣ 每日一题;
2️⃣ 学习顺序是由易到难;
3️⃣ 题目按照数据结构进行分类;
4️⃣ 每个类型的题目预计安排 100 道题(简单/中等/困难各 33 道);
26. 删除有序数组中的重复项
给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。
考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:
示例 1:
输入:nums = [1,1,2]
输出:2, nums = [1,2,_]
解释:函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2 。不需要考虑数组中超出新长度后面的元素。
示例 2:
输入:nums = [0,0,1,1,1,2,2,3,3,4]
输出:5, nums = [0,1,2,3,4]
解释:函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4 。不需要考虑数组中超出新长度后面的元素。
提示:
要解决这个问题,可以使用双指针技巧。这个方法非常适合处理需要原地修改数组的情况。以下是详细的解释和多种解决方法:
双指针法使用两个指针,一个用于遍历整个数组,另一个用于标记新数组的末尾。遍历过程中,如果遇到新元素(与前一个元素不同),就将这个新元素放到新数组的末尾。
时间复杂度:O(n),空间复杂度:O(1)
function removeDuplicates(nums) {
if (nums.length === 0) return 0;
let i = 0;
for (let j = 1; j < nums.length; j++) {
if (nums[j] !== nums[i]) {
i++;
nums[i] = nums[j];
}
}
return i + 1;
}
虽然这种方法不符合“原地”修改数组的要求,但它简单易懂且可以用于理解去重过程。
时间复杂度:O(n),空间复杂度:O(n)
function removeDuplicates(nums) {
const uniqueNums = Array.from(new Set(nums));
for (let i = 0; i < uniqueNums.length; i++) {
nums[i] = uniqueNums[i];
}
return uniqueNums.length;
}
这种方法是为了展示不同的思维方式,但它不如双指针法高效。递归方法在实际应用中并不推荐,因为它没有双指针法简洁且高效。
时间复杂度:O(n),空间复杂度:O(n)(由于递归调用栈)
function removeDuplicates(nums) {
function helper(index) {
if (index >= nums.length) return index;
let newIndex = helper(index + 1);
if (index > 0 && nums[index] === nums[index - 1]) {
for (let i = index; i < newIndex - 1; i++) {
nums[i] = nums[i + 1];
}
newIndex--;
}
return newIndex;
}
return helper(1);
}
在实际应用中,推荐使用双指针法,因为它不仅简单易懂,而且符合题目要求的原地修改,并且具有 O(n) 的时间复杂度和 O(1) 的空间复杂度。
附件:
如果有任何问题或建议,欢迎在评论区留言交流!祝你编程愉快!
*请认真填写需求信息,我们会在24小时内与您取得联系。