一直很纠结算法的文章应该怎么写。最后觉得还是从最简单的level开始写吧,一开始就弄些重量级的,什么人工智能,机器学习的算法,还要有大量的数学以及优化的知识,小白们估计会很郁闷,当然我也不一定能做出来对吧。

我计划每题给出两种语言的解决方案,一种静态语言,一种动态语言。

我选择C语言,Python和Java作为实现语言,由于篇幅有限,其他语言的实现有兴趣的朋友请自己尝试。

LeetCode 976. 最大的三角形周长(Largest Perimeter Triangle)

问题描述:

给定一个整型数组A, 每一个元素表示一个边的长度,如果任意3个元素可以组成三角形,求三角形的最大周长。如果任意三个元素不能组成一个三角形,则返回0。

注:

  1. 3 <= A.length <= 10000
  2. 1 <= A[i] <= 10^6

示例:

C语言实现:

我们用排序算法来解这道题。

排序可能会修改原数据,我们的原则是不修改原输入数据,所以先copy一份points的副本t,我们对这个副本数据进行排序。

我们调用qsort来做自定义快速排序,排序是依据是点到原点的欧式距离的大小。

欧式距离的计算是,两点间不同维度的差的平方再相加后再开方。由于我们只是比较大小,开不开方并不影响这个大小的比较,因此最后的开方实际上是不需要的。

副本t被排序后,我们只要取前K个元素返回就可以了。

这个思路很简单,实现容易,代码也比较简洁。因为用到快速排序了所以,算法复杂度是O(nlogn)。

其他还有解法可以实现O(n),但是比这个要复杂一些。我还是推荐这个思路。

代码如下:

python语言的实现:

python的实现和C语言的原理是一样的,先自定义排序,然后用切片截取前K个元素返回即可。

代码如下:

Java语言的实现:

Java的实现和C语言的实现相同,但是注意,sort的第二个参数不要直接使用lambda表达式,否则性能至少会降低2倍。

代码如下:

判断三角形java代码_打基础之LeetCode算法题第72篇:最大的三角形周长问题相关推荐

  1. 算法题库 java实现_[2]十道算法题【Java实现】

    前言 清明不小心就拖了两天没更了-- 这是十道算法题的第二篇了-上一篇回顾:十道简单算法题 最近在回顾以前使用C写过的数据结构和算法的东西,发现自己的算法和数据结构是真的薄弱,现在用Java改写一下, ...

  2. 道指mt4代码_剑指offer算法题052:正则表达式匹配

    小编在求职找找工作期间剑指offer上的算法题刷了很多遍,并且每道题小编当时都总结了一种最适合面试时手撕算法的最优解法.考虑到剑指offer算法题在面试中的高频出现,小编每天和大家分享一道剑指offe ...

  3. 判断三角形java代码_小猿圈Java循环嵌套语法的使用介绍

    Java是一直被程序员使用的程序之一,而且应用也是最广泛的一个,很多应用中都会用得到,小猿圈java讲师就为你介绍一下Java循环嵌套语法的使用介绍,希望对你有所帮助. 嵌套循环是指在一个循环语句的循 ...

  4. 冒泡排序java代码_看动画学算法之:排序冒泡排序

    点击上方的蓝字关注我吧 程序那些事 简介 排序可能是所有的算法中最最基础和最最常用的了.排序是一个非常经典的问题,它以一定的顺序对一个数组(或一个列表)中的项进行重新排序. 排序算法有很多种,每个都有 ...

  5. 售票java代码_初探12306售票算法(二)-java代码实践

    周五闲来无事,基于上一篇关于初探12306售票算法(一)-理论,进行了java编码实践供各位读者参考(以下为相关代码的简单描述) 1.订票工具类 1.1初始化一列车厢的票据信息 /** * 生成Tic ...

  6. 判断给定的两个数是否是亲和数_动画演示LeetCode算法题:004-寻找两个有序数组的中位数...

    题目: 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和 nu ...

  7. 蝗虫算法java代码_蝗虫搜索算法 蝗虫算法:蝗虫优化算法是模拟自然界蝗虫种群捕食行为而提出的一 联合开发网 - pudn.com...

    蝗虫搜索算法 所属分类:其他 开发工具:matlab 文件大小:347KB 下载次数:5 上传日期:2020-07-26 16:31:25 上 传 者:西柚不加冰 说明:  蝗虫算法:蝗虫优化算法是模 ...

  8. 人工蜂群算法的java代码_求人工蜂群算法的c程序源代码``````谢谢各位大神了``````...

    展开全部 /* ABC algorithm coded using C programming language */ /* Artificial Bee Colony (ABC) is one of ...

  9. 基于内容的推荐java代码_三种推荐算法简介:基于用户的协同过滤、基于物品的协同过滤、基于内容的推荐...

    1.推荐算法 1.1.协同过滤 协同过滤是目前应用最广泛的推荐算法,它仅仅通过了解用户与物品之间的关系进行推荐,而根本不会考虑到物品本身的属性. 可分成两类: 1.基于用户(user-based)的协 ...

最新文章

  1. 再谈 查询长期未登录AD的用户
  2. tensorflow-gpu2.x无法检测到GPU设备
  3. “非”天才女程序员的人生
  4. netflix linux_Netflix如何处理故障转移,Anaconda,Linux命令行技巧,Python日期时间库,GDPR,微服务等
  5. Tomcat局域网多端口建立多网站
  6. 深度学习框架中的魔鬼:探究人工智能系统中的安全问题
  7. springboot注解式AOP通过JoinPoint获取参数 学习笔记
  8. 计算机二级与c语言有什么关系,计算机二级c和c++区别?
  9. 日月神话_功能色彩神话
  10. 图解:冒泡排序及其优化
  11. Win10安装Ubuntu双系统导致Win10时间有问题
  12. MySQL 清除表空间碎片
  13. unity 屏幕虚拟键盘
  14. Matrix Concatenate 矩阵串联
  15. vue中使用vue-pdf插件显示pdf
  16. python数据结构与算法 20 递归和递归三定律
  17. 基于 Java Spring Security 的关注微信公众号即登录的设计与实现 ya
  18. 使用缓存django、redis
  19. 逻辑回归实现数字手写识别
  20. word2016 明明设置了默认粘贴为“仅保留文本”,可是每次粘贴的时候还是带源格式怎么办?

热门文章

  1. Redis连接出现Error: Connection reset by peer的问题是由于使用Redis的安全模式
  2. will_paginate 用作查询分页的注意事项
  3. wpa_supplicant drivers 查看跟踪
  4. 只缺一个程序员 如何让产品实现
  5. Filezilla 利用私钥无密码登录
  6. 【转】memcached工作原理介绍
  7. postfix邮件过滤
  8. 2008年12月13日上海USB驱动开发深度解析讲座PPT
  9. mysql编码是乱码_mysql中文乱码 常见编码问题解决方法分享
  10. 用于生成随机数的python标准库模块是_17 Python 标准库之 random 模块 - Python 进阶应用教程...