当前位置: 首页 > wzjs >正文

网站怎么做跟踪链接台州网站制作维护

网站怎么做跟踪链接,台州网站制作维护,网站开发费用如何记账,织梦网站列表11. 26. 删除有序数组中的重复项(简单,双指针) 26. 删除有序数组中的重复项 - 力扣(LeetCode) 思想: 1.我的思想: 双指针遍历集合储存已有元素 2.官方思想: 题目条件有序数组删除重复元素,所以重复元素都是连续存在…
11. 26. 删除有序数组中的重复项(简单,双指针)

26. 删除有序数组中的重复项 - 力扣(LeetCode)

思想:

1.我的思想:
双指针遍历+集合储存已有元素
2.官方思想:
题目条件有序数组删除重复元素,所以重复元素都是连续存在
同向快慢指针,慢指针指向下一个赋值位置,快指针遍历寻找不重复元素,即fast[i]!=fast[i-1]时,找到不重复元素,赋值给slow位置,slow++
最终[0,slow)为不重复元素区域,长度为slow
初始条件判断:数组元素为0直接返回0,让fast[i-1]有意义

代码

我的:
c++:

class Solution {
public:int removeDuplicates(vector<int>& nums) {set<int> s;int n = nums.size();int left = 0;for (int right = 0; right < n; ++right) {if (s.find(nums[right]) == s.end()) {nums[left] = nums[right];left++;s.insert(nums[right]);}}return left;}
};

python:

class Solution:def removeDuplicates(self, nums: List[int]) -> int:s = set()n = len(nums)left, right = 0, 0for right in range(n):if nums[right] not in s:s.add(nums[right])nums[left] = nums[right]left += 1return left

官方:
c++:

class Solution {
public:int removeDuplicates(vector<int>& nums) {int n = nums.size();if (n == 0)return 0;int slow = 1;for (int fast = 1; fast < n; ++fast) {if (nums[fast] != nums[fast - 1]) {nums[slow] = nums[fast];slow++;}}return slow;}
};

python:

class Solution:def removeDuplicates(self, nums: List[int]) -> int:n = len(nums)if n == 0:return 0slow = 1for fast in range(1, n):if nums[fast] != nums[fast - 1]:nums[slow] = nums[fast]slow += 1return slow
12. 283. 移动零(简单,双指针)

283. 移动零 - 力扣(LeetCode)

思想

1.快慢双指针,10 27.移除元素 val=0时的特殊情况,且不再是赋值,而是交换

代码

c++:

class Solution {
public:void moveZeroes(vector<int>& nums) {int n = nums.size();int slow = 0;for (int fast = 0; fast < n; ++fast) {if (nums[fast] != 0) {swap(nums[slow], nums[fast]);slow++;}}}
};

python:

class Solution:def moveZeroes(self, nums: List[int]) -> None:"""Do not return anything, modify nums in-place instead."""n = len(nums)slow = 0for fast in range(n):if nums[fast] != 0:nums[slow], nums[fast] = nums[fast], nums[slow]slow += 1
13. 844. 比较含退格的字符串(简单,学习,栈,双指针)

844. 比较含退格的字符串 - 力扣(LeetCode)

思想

1.法一(栈):
最直观想到遇到’#'号回退,来模拟这一过程,就是,因为是字符串处理,可以直接用字符串当栈
注意:栈要弹出元素时立刻想到判断栈不为空
2.法二(双指针):
(1)一个字符是否会被删掉取决于后面的字符,与前面的字符无关,所以逆序遍历可以先遇到#号字符从而确定前面的字符是否要被删掉
(2)目标是比较不会被删掉的字符,所以用两个同向逆序指针,i表示当前要比较的不会被删掉的字符,skip记录当前遇到的#号字符数量,即要删除的字符数量,从而确定i的位置,逻辑如下:

  • 遇到#号字符,skip++,i–
  • 未遇到#号字符
    • skip>0,删除当前字符,i–
    • skip=0,退出寻找i的位置循环
      而总体的遍历指针是i,遍历范围[0,n),寻找i的位置后要判断是否在范围内
代码

法一
c++

class Solution {
public:bool backspaceCompare(string s, string t) {if (build(s) == build(t))return true;return false;}string build(string str) {string res;for (char ch : str) {if (ch != '#')res.push_back(ch);else if (!res.empty())res.pop_back();}return res;}
};

python:

class Solution:def backspaceCompare(self, s: str, t: str) -> bool:if self.build(s) == self.build(t):return Truereturn Falsedef build(self, s: str) -> str:res = ""for ch in s:if ch != "#":res += chelif s:res = res[:-1]return res

1.调用函数要用self.
2.字符串是不可变对象,要用+=
3.删除最后一个字符为[:-1],因为最后一个end取不到
法二:
c++:

class Solution {
public:bool backspaceCompare(string s, string t) {int i = s.size() - 1, j = t.size() - 1;while (i >= 0 ||j >= 0) { // 一个为空串时,另一个可能前面还有#号可能变成空串int skipS = 0, skipT = 0;while (i >= 0) {if (s[i] == '#') {skipS++;i--;} else if (skipS > 0) {skipS--;i--;} else {break;}}while (j >= 0) {if (t[j] == '#') {skipT++;j--;} else if (skipT > 0) {skipT--;j--;} else {break;}}if (i >= 0 && j >= 0) {if (s[i] != t[j]) {return false;}} else {if (i >= 0 || j >= 0) {return false;}}i--;j--;}return true;}
};

python:

class Solution:def backspaceCompare(self, s: str, t: str) -> bool:i, j = len(s) - 1, len(t) - 1while i >= 0 or j >= 0:skipS, skipT = 0, 0while i >= 0:if s[i] == "#":skipS += 1i -= 1elif skipS > 0:skipS -= 1i -= 1else:breakwhile j >= 0:if t[j] == "#":skipT += 1j -= 1elif skipT > 0:skipT -= 1j -= 1else:breakif i >= 0 and j >= 0:if s[i] != t[j]:return Falseelse:if i >= 0 or j >= 0:return Falsei -= 1j -= 1return True
http://www.dtcms.com/wzjs/486885.html

相关文章:

  • wordpress成品站源码sem广告投放是做什么的
  • e通网网站建设广州seo快速排名
  • 云南昆明疫情最新消息广州软件系统开发seo推广
  • 江西昌宇建设工程公司网站互联网推广软件
  • 菜鸟教程自学网北京网络seo
  • 做网站业务员提成几个点app拉新任务平台
  • 北京网站seo公司安卓优化大师老版本
  • 自己做的网站项目怎样卖推广注册app拿佣金平台
  • 国内顶尖网站设计公司怎么让关键词快速排名首页
  • 中国十大猎头公司介绍优化清理大师
  • 安徽工程建设信息网站王开林百度搜索广告投放
  • 北京做网站多少钱合理找个免费网站这么难吗
  • 网站建设毕业实践设计报告重庆seo代理计费
  • 贵州讯玛网站建设如何做一个营销方案
  • 个人可以自己做网站吗郑州网络营销
  • 温州网站设计公司哪家好济南seo整站优化厂家
  • 上海网站开发企业二级域名网站查询入口
  • 荆门网络推广哈尔滨seo和网络推广
  • wordpress分类导航关键词优化排名软件哪家好
  • 网站建设报告 商业价值网上竞价平台
  • 电子政务门户网站建设项目招标采购快速优化官网
  • 做外贸网站有哪些成品网站源码在线看
  • 专门做塑胶原料副牌网站关键字排名优化公司
  • 金坛网站建设郑州最好的建站公司
  • 襄樊网站推广网络营销logo
  • 毕业设计做网站有哪些方面网站排名软件包年
  • 多样化的网站建设公司关键词指数
  • 凡网站建设国际新闻今天最新消息
  • 苏州企业网站建设怎么样建立自己的网站
  • 网站建设开发哪些开发语言在线培训网站