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

做教案找资料有哪些网站哪个网站可以做h5页面

做教案找资料有哪些网站,哪个网站可以做h5页面,wordpress 打卡插件,怎么通过数据库做网站的登录文章目录 移除元素 leetcode27暴力解法双指针法1. 快慢指针2. 双向指针 移除元素 leetcode27 go中数据类型的分类: 1.值类型:int、float、bool、string、数组、结构体 2.引用类型:指针、切片、map、管道、接口 由于切片为引用类型&#xff0c…

文章目录

  • 移除元素 leetcode27
    • 暴力解法
    • 双指针法
      • 1. 快慢指针
      • 2. 双向指针

移除元素 leetcode27

  go中数据类型的分类:
1.类型:int、float、bool、string、数组、结构体
2.引用类型:指针、切片、map、管道、接口

  由于切片为引用类型,其本质是基于数组完成的,因此我们操作切片可以理解为操作底层的数组。

暴力解法

  第一个for循环遍历切片,第二个for循环将部分数组前移

双指针法

1. 快慢指针

  双指针法(快慢指针法): 通过一个快指针慢指针一个for循环下完成两个for循环的工作。
  在c中erase函数删除元素是将数组中当前位置后面的元素都向前移动一位,其时间复杂度为O(n)
  而go中切片的截取(s[:]和append方法),都是通过修改指向底层的数组的指针实现,对于删除头部和尾部元素的时间复杂度为O(1),中间元素的删除则同样为O(n)
  完整代码如下,包含学习过程

package mainimport "fmt"func main() {nums := []int{3, 2, 2, 3}val := 3c := removeElement(nums, val)fmt.Println(c)fmt.Println(nums)
}// 暴力解法
/*func removeElement(nums []int, val int) int {length := len(nums)if length == 0 {return 0}c := lengthfor i, v := range nums {if v == val {putOff(nums, i, val, length)c--}for nums[i] == val {putOff(nums, i, val, length)c--}}if nums[0] == val {return 0}return c
}func putOff(nums []int, i int, val int, length int) {if i == length-1 {nums[length-1] = val - 1return}nums[i] = nums[i+1]putOff(nums, i+1, val, length)
}*/// 双指针法 这里的解法还是有问题,在对应fast指针更新时,不作更新,只进行fast的右移,可以减少代码量
/*func removeElement(nums []int, val int) int {var fast, slow = 0, 0length := len(nums)for fast < length {for nums[fast] == val {fast++if fast == length {return length - fast + slow}}//if nums[slow] == val {////}nums[slow] = nums[fast]slow++fast++}return length - fast + slow
}*/// 改进双指针,最终版
func removeElement(nums []int, val int) int {var fast, slow = 0, 0length := len(nums)for fast < length {if nums[fast] != val { //如果fast对应值不是val,则可以写入nums[slow] = nums[fast]slow++}//如果fast对应等于val,则fast移位,不进行更新操作fast++}return slow
}

2. 双向指针

//相向双指针法
func removeElement(nums []int, val int) int {// 有点像二分查找的左闭右闭区间 所以下面是<=left := 0right := len(nums) - 1for left <= right {// 不断寻找左侧的val和右侧的非val 找到时交换位置 目的是将val全覆盖掉for left <= right && nums[left] != val {left++}for left <= right && nums[right] == val {right--}//各自找到后开始覆盖 覆盖后继续寻找if left < right {nums[left] = nums[right]left++right--}}fmt.Println(nums)return left
}
http://www.yayakq.cn/news/775319/

相关文章:

  • 凡科建设网站还用买服务器吗html5网页设计论文
  • 石家庄公司网站设计免费ip地址网站
  • 网站知识网站做图书网站的代码
  • 网站改版什么意思网站页面设计考虑要素
  • 建立网站用什么软件wordpress搭建站点
  • 大型的建设工程类考试辅导网站手机网站建设专业服务公司
  • 宁波网站建设熊掌号房山企业网站建设公司
  • 中国制造网建站招聘网站建设价格
  • 企业建站公司电话如何设置网站默认首页
  • 网站建设选哪个腾讯员工月薪多少
  • 织梦网站必须下载免费微信小程序制作软件
  • 鲜花销售网站开发费用网站项目ppt怎么做
  • 上海网站建设收费河南郑州
  • 有些网站为什么可以做资讯网站开发入门书籍2018
  • 网站建设客户资料收集清单无锡建设工程服务中心
  • 网站开发运作哪个网站做线路攻略做得好
  • 宿迁网站建设制作株洲专业网站排名优化
  • 安徽有几家做网站微信营销软件app
  • 网站制作职责商丘网站设计
  • h5类型的网站是怎么做的沈阳seo网站管理
  • 一对一视频网站开发池州网站建设有哪些公司
  • 网站建设单位自己做app建网站
  • 淘宝建站服务三合一网站管理系统
  • seo网站推广工具wordpress内存
  • 优秀网站设计书籍上海cms建站
  • 网站主机是服务器吗建设网站的基本知识
  • 网站建设进项填那个服务微商网站制作
  • 哪里网站建设专业wordpress本地上传
  • 做网站还需要服务器吗wordpress发表的文章百度抓取失败
  • google官方网站注册外贸人常用的app