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

南阳卧龙区网站建设哪家好企业网站是什么

南阳卧龙区网站建设哪家好,企业网站是什么,如何让做树洞网站,跨境电商最好卖的产品目录 3768. 字符串删减 - 滑动窗口ac 799. 最长连续不重复子序列 - 滑动窗口 800. 数组元素的目标和 - 二分ac 2816. 判断子序列 - 双指针 1238. 日志统计 - 滑动窗口 1240. 完全二叉树的权值 - 双指针 1、前缀和 - 通过了 5/12个数据 2、双指针 3768. 字符串删减 -…

目录

3768. 字符串删减 - 滑动窗口ac

799. 最长连续不重复子序列 - 滑动窗口

800. 数组元素的目标和 - 二分ac

2816. 判断子序列 - 双指针

1238. 日志统计 - 滑动窗口

1240. 完全二叉树的权值 - 双指针  

1、前缀和 - 通过了 5/12个数据 

2、双指针


3768. 字符串删减 - 滑动窗口ac

3768. 字符串删减 - AcWing题库

题目:

思路:

用双指针l和r,移动r指针

当已经统计了2个x,若下一个字符为x,则需要删除1个x,且滑窗左边界往后移一位

若下一个字符不为x,则统计x个数的cnt清零,缩小滑窗至该非x字符上

import java.util.*;class Main
{public static void main(String[] args){Scanner sc=new Scanner(System.in);int n=sc.nextInt();String s=sc.next();int res=0,cnt=0;for(int l=0,r=0;r<n;r++){char c=s.charAt(r);if(cnt==2&&c=='x'){res++;l++;}else if(c=='x') cnt++;else {cnt=0;l=r;}}System.out.print(res);}
}

799. 最长连续不重复子序列 - 滑动窗口

活动 - AcWing

题目:

给定一个长度为 n 的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。

输入样例:
5
1 2 2 3 5
输出样例:
3

思路:

用一个数组统计每个数字出现个数

滑动窗口中如果出现重复数字,则左边界增大缩小滑窗直至不出现重复数字

不断更新最大连续不重复子序列长度

import java.util.*;class Main
{static int N=100010;static int[] st=new int[N];public static void main(String[] args){Scanner sc=new Scanner(System.in);int n=sc.nextInt();int[] a=new int[n];for(int i=0;i<n;i++) a[i]=sc.nextInt();int res=0;for(int l=0,r=0;r<n;r++){st[a[r]]++;while(l<r&&st[a[r]]>1) st[a[l++]]--; //如果滑窗内仍存在重复数字 则缩小滑窗res=Math.max(res,r-l+1);}System.out.print(res);}
}

 

800. 数组元素的目标和 - 二分ac

活动 - AcWing

import java.util.*;class Main
{static int N=100010;static int[] a=new int[N],b=new int[N];public static void main(String[] args){Scanner sc=new Scanner(System.in);int n=sc.nextInt(),m=sc.nextInt(),x=sc.nextInt();for(int i=0;i<n;i++) a[i]=sc.nextInt();for(int j=0;j<m;j++) b[j]=sc.nextInt();for(int i=0;i<n;i++){int t=x-a[i];int l=0,r=m-1;while(l<r){int mid=l+r>>1;if(b[mid]>=t) r=mid;else l=mid+1;}if(b[l]==t){System.out.print(i+" "+l);break;}}}
}

 

2816. 判断子序列 - 双指针

活动 - AcWing

题目:

思路:

用i指针指向a,j指针指向b

遍历b数组,如果a[i]==b[j],则向后移动i指针

如果遍历完,i==n,说明a全部匹配成功,说明a是b的子序列

import java.util.*;class Main
{static int N=100010;static int[] a=new int[N],b=new int[N];public static void main(String[] args){Scanner sc=new Scanner(System.in);int n=sc.nextInt(),m=sc.nextInt();for(int i=0;i<n;i++) a[i]=sc.nextInt();for(int j=0;j<m;j++) b[j]=sc.nextInt();int i=0;for(int j=0;j<m;j++){if(i<n&&a[i]==b[j]) i++;}if(i==n) System.out.print("Yes");else System.out.print("No");}
}

 

1238. 日志统计 - 滑动窗口

活动 - AcWing

题目:

思路:

按时间从小到大顺序排序

枚举时间段,滑动窗口内为合法时间,记录该区间内帖子的赞数

如果在滑窗内且赞数≥k,则为热帖,标记上

import java.util.*;class Main
{static int N=100010;public static void main(String[] args){Scanner sc=new Scanner(System.in);int n=sc.nextInt(),d=sc.nextInt(),k=sc.nextInt();int[][] list=new int[n][2];int[] cnt=new int[N];int[] st=new int[N];for(int i=0;i<n;i++){list[i][0]=sc.nextInt();list[i][1]=sc.nextInt();}Arrays.sort(list,(o1,o2)->{return o1[0]-o2[0];});for(int l=0,r=0;r<n;r++) //滑动窗口是合法时间段 统计滑窗内是否有热帖存在{int id=list[r][1];cnt[id]++;while(list[r][0]-list[l][0]>=d) //超过最大时间段 缩小滑窗{cnt[list[l][1]]--;l++;}if(cnt[id]>=k) st[id]=1;}for(int i=0;i<=100000;i++) if(st[i]==1) System.out.println(i);}
}

 

1240. 完全二叉树的权值 - 双指针  

活动 - AcWing

题目:

1、前缀和 - 通过了 5/12个数据 

看错题了,概念问题,是完全二叉树,看成满完全二叉树了……

完全二叉树,共n层,其中n-1层是满二叉树结构,最后一层所有节点都在最左边

import java.util.*;class Main
{static int N=100010;public static int work(int n){int cnt=0;while(n>1){n/=2;cnt++;}return cnt;}public static void main(String[] args){Scanner sc=new Scanner(System.in);int n=sc.nextInt();int[] a=new int[N];int[] s=new int[N];for(int i=1;i<=n;i++) {a[i]=sc.nextInt();s[i]=s[i-1]+a[i];}int t=work(n+1);t--;int cnt=1,pre=1;int maxx=s[1],res=1;while(t-->0){int r=(int)Math.pow(2,cnt);int sum=s[r]-s[pre];if(maxx<sum){maxx=sum;int tp=work(r+1);res=tp;}cnt++;pre=r;}System.out.print(res);}
}

2、双指针

思路:

枚举每一层的起点和层数

计算每一层的总和 取最大值

import java.util.*;class Main
{static int N=100010;public static void main(String[] args){Scanner sc=new Scanner(System.in);int n=sc.nextInt();int[] a=new int[N];for(int i=1;i<=n;i++) a[i]=sc.nextInt();long maxx=-0x3f3f3f3f;int res=0;for(int i=1,d=1;i<=n;i*=2,d++) //i为起点下标 d为层数{long sum=0;for(int j=i;j<i+(1<<d-1)&&j<=n;j++) sum+=a[j]; //1<<d指将1位二进制数向左移d位 即2^dif(sum>maxx){maxx=sum;res=d;}}System.out.print(res);}
}

http://www.tj-hxxt.cn/news/123981.html

相关文章:

  • 榆林做网站多少钱企业培训十大热门课程
  • 抖音营销网站建设价格国内永久免费的云服务器
  • 广告设计学的是什么成都搜索优化整站优化
  • 新手站长如何购买虚拟主机做网站搜索引擎营销的内容
  • 中国建设网站首页随州网络推广
  • 做a 免费网站58网络推广
  • 网站开发运营产品经理招聘网站推广途径和推广要点
  • 企业官方网站认证电商培训大概多少学费
  • 江门企业免费建站济南seo排名优化推广
  • 怎么创建公司的个人网站seo黑帽技术
  • 做一个公司网站要多少钱网站怎么优化推荐
  • 深圳专业网站建设怎么建立一个网站
  • 申请域名后怎么做网站网站制作软件
  • 网站还没上线怎么做品牌推广免费域名注册二级域名
  • 美国做刀剑的网站seo排名专业公司
  • 做高考题的网站推广有奖励的app平台
  • com网站域名网站分析工具
  • 国外网站做freelancer百度云资源搜索平台
  • 邢台市网站开发公司有哪些百度知道问答平台
  • 成都电商网站开发公司seo服务外包
  • 九曲网站建设广州品牌营销策划公司排名
  • 免费优化网站的软件网络营销是什么
  • 公司做网站文案怎么写吉林seo基础知识
  • 正能量软件不良网站直播艾滋病多久能查出来
  • 做明星同款的网站阿里云搜索引擎入口
  • 积分网站建设企业营销策略分析论文
  • 营销型网站建设案例深圳seo排名
  • 记事本做网站改变图片大小徐州关键词优化排名
  • 做家具有那个网站松原头条新闻今日新闻最新
  • wordpress分页条数seo入门黑帽培训教程