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

网站建设实训总结200seo网站推广的主要目的是什么

网站建设实训总结200,seo网站推广的主要目的是什么,做旅游网站怎样,网站做后怎么可以在百度搜索到LeetCode经典算法题:矩阵中省份数量经典题目三角形最大周长java多种解法 文章目录1 省份数量题目描述解题思路与代码解法一:深度优先解法二:广度优先解法三:并查集2 三角形的最大周长题目描述解题思路与代码贪心算法:1…

LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法

文章目录

  • 1 省份数量
    • 题目描述
    • 解题思路与代码
      • 解法一:深度优先
      • 解法二:广度优先
      • 解法三:并查集
  • 2 三角形的最大周长
    • 题目描述
    • 解题思路与代码
      • 贪心算法:

1 省份数量

题目描述

有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c直接相连,那么城市 a 与城市 c 间接相连。

省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。

给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连,而 isConnected[i][j] = 0 表示二者不直接相连。

返回矩阵中 省份 的数量。

解题思路与代码

解法一:深度优先

获取一个城市,通过递归找到离该城市最远的城市,标记为已访问,然后逐个向内进行标记

 	public int findCircleNum(int[][] isConnected) {int provinces = isConnected.length;boolean[] visited = new boolean[provinces];int circles = 0;for (int i = 0; i < provinces; i++) {if (!visited[i]) {dfs(isConnected, visited, provinces, i);circles++;}}return circles;}public void dfs(int[][] isConnected, boolean[] visited, int provinces, int i) {for (int j = 0; j < provinces; j++) {if (isConnected[i][j] == 1 && !visited[j]) {visited[j] = true;dfs(isConnected, visited, provinces, j);}}}

解法二:广度优先

获取一个城市,先标记与该城市直连的城市(最近的),然后逐步向外扩散寻找

    public int bfs(int[][] isConnected) {int provinces = isConnected.length;boolean[] visited = new boolean[provinces];int circles = 0;Queue<Integer> queue = new LinkedList<Integer>();for (int i = 0; i < provinces; i++) {if (!visited[i]) {queue.offer(i);while (!queue.isEmpty()) {int j = queue.poll();visited[j] = true;for (int k = 0; k < provinces; k++) {if (isConnected[j][k] == 1 && !visited[k]) {queue.offer(k);}}}circles++;}}return circles;}

解法三:并查集

将每个城市看成一个节点,如果两个城市相连,则建立树关系,选出其中一个为head,如果两个树中的节点也相连,则将其中一个head设置为另一个树的head

两个方法 :一个寻找head节点,一个合并树

    static int mergeFind(int[][] isConnected){int provinces = isConnected.length;int[] head = new int[provinces];int[] level = new int[provinces];for (int i = 0; i < provinces; i++) {head[i] = i;level[i] = 1;}for (int i = 0; i < provinces; i++) {for (int j = i + 1; j < provinces; j++) {if (isConnected[i][j] == 1) {merge(i, j,head,level);}}}int count = 0;//找出所有的headfor (int i = 0; i < provinces; i++) {if (head[i] == i) {count++;}}return count;}//查找head节点static int find(int x, int[] arr) {if(arr[x] == x)return x;elsearr[x] = find(arr[x],arr);//路径压缩,每一个节点直接能找到headreturn arr[x];}static void merge(int x, int y,int[] arr,int[] level) {int i = find(x,arr);int j = find(y,arr);//深度比较短的树的head往深度大的树上挂,使合并后的深度尽量小if(i == j){return;}if(level[i] <= level[j]){arr[i] = j;}else{arr[j] = i;}//深度加1level[j]++;}

2 三角形的最大周长

题目描述

给定由一些正数(代表长度)组成的数组 A ,返回由其中三个长度组成的、面积不为零的三角形的最大周长。

如果不能形成任何面积不为零的三角形,返回 0 。

解题思路与代码

贪心算法:

先小到大排序,假设最长边是最后下标,另外两条边是倒数第二和第三下标,则此时三角形周长最大

n < (n-1) + (n-2),如果不成立,意味着该数组中不可能有另外两个值之和大于n,此时将n左移,重新计算

 public int largestPerimeter(int[] A) {Arrays.sort(A);for (int i = A.length - 1; i >= 2; --i) {if (A[i - 2] + A[i - 1] > A[i]) {return A[i - 2] + A[i - 1] + A[i];}}return 0;}
http://www.dinnco.com/news/60007.html

相关文章:

  • 使用aspx做电影网站微信指数查询入口
  • 服务好的高端网站建设报价快速排名优化推广排名
  • 做视频网站 服务器企业培训权威机构
  • 自助建站百度广告免费发布信息
  • 百度首页排名代发什么是搜索引擎优化的核心
  • 自己如何建设网站聊天室网络推广是指什么
  • 全国建设工程造价管理系统天津百度关键词seo
  • 自己怎么做独立网站网站站长
  • wordpress 12张表班级优化大师怎么用
  • 双线主机可以做彩票网站吗南宁seo公司哪家好
  • 西宁网站维护公司企业的网络推广
  • 网站开发工程师asp考试试题国际新闻最新消息十条
  • 中国外贸网站大全网站安全查询系统
  • 电商平台网站多少钱渠道推广
  • 服务器2003怎么做网站b2b b2c c2c o2o区别
  • 如何做营销型手机网站优化百度搜索入口官网
  • 中国女排联赛排名西安seo引擎搜索优化
  • 公司网站建设需要注意什么企业网络搭建
  • 怎么制作网站设计便民信息微信平台推广
  • wordpress跨境平台威海seo公司
  • 网站开发建设方案的主要内容包括互动营销是什么
  • 为您打造高端品牌网站知识营销
  • 上海市建设工程招标造价网站大数据营销的案例
  • 中国电商平台有哪些seo的全称是什么
  • 做网站空间会招攻击谷歌网页版登录入口
  • 柳州网站建设公新媒体营销策略有哪些
  • 公司网站域名申请流程数据分析网页
  • 佛山网站到首页排名制作一个网站的费用是多少
  • 卖高权重网站做跳转重庆企业站seo
  • 做公司网站需要提供的资料上海网站seo公司