春招学习第六天(6/30)

今天的力扣每日一题,没啥好说的。就是模拟一下。困难题我唯唯诺诺,简单题我重拳出击。

1046. 最后一块石头的重量

有一堆石头,每块石头的重量都是正整数。
每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:

如果 x == y,那么两块石头都会被完全粉碎;
如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。
最后,最多只会剩下一块石头。返回此石头的重量。如果没有石头剩下,就返回 0。

示例:
输入:[2,7,4,1,8,1]
输出:1
解释:
先选出 7 和 8,得到 1,所以数组转换为 [2,4,1,1,1],
再选出 2 和 4,得到 2,所以数组转换为 [2,1,1,1],
接着是 2 和 1,得到 1,所以数组转换为 [1,1,1],
最后选出 1 和 1,得到 0,最终数组转换为 [1],这就是最后剩下那块石头的重量。

AC代码:(用一个最大堆就可以了,也可以每次都排序一下取最后的)

    public int lastStoneWeight(int[] stones) {
        PriorityQueue<Integer> pq=new PriorityQueue<>((o1, o2) ->o2-o1 );
        for (int i = 0; i <stones.length ; i++) {
            pq.add(stones[i]);
        }
        while (pq.size()>=2){
            int a=pq.poll();
            int b=pq.poll();
            //System.out.println("a: "+a +"b: "+b);
            if (a!=b){
                pq.add(Math.abs(a-b));
            }
        }
        if (pq.size()==1){
            return pq.poll();
        }
        else{
            return 0;
        }
    }

然后是比较那啥的爬虫部分。写论文好累

XPATH爬取网页

1.先导入包

import requests
from lxml import etree

2.然后爬取一下百度网页

url = "http://news.baidu.com/ns?word=" + requests.utils.quote("人工智能")
headers = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,'
              'application/signed-exchange;v=b3;q=0.9',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
                  'Chrome/80.0.3987.149 Safari/537.36'}
response = requests.get(url, headers=headers)
response.encoding = 'utf-8'

3.调用程序包lxml.etree的构造函数HTML()将HTML网页源代码的字符串转换为元素树可识别的HTML对象。

走你!

ehtml = etree.HTML(response.text)

然后就可以开始解析网页啦!

1. 所有节点

以下例子选取所有节点,使用//*实现。

result = ehtml.xpath('//*')

匹配可以指定节点名称。以下例子获取所有节点h3。

result = ehtml.xpath('//h3')

h3

2. 子节点

以下例子选取节点div的直接子节点h3的直接子节点a。这里仅选取了节点,返回结果为节点对象。

result1 = ehtml.xpath('//div/h3/a')
result1

son

单斜杠/用于选取直接子节点,如果要获取所有子孙节点,需要使用双斜杠//。 以下例子获取节点div下的所有子孙节点h3。

result = ehtml.xpath('//div//h3')
result

3. 节点属性

以下例子使用@<属性名>选取节点a的属性href。

result = ehtml.xpath('//div/h3/a/@href')
result

4. 节点文本内容

以下例子使用text()选取节点a的所有子孙节点的文本内容。

result = ehtml.xpath('//div/h3/a//text()')
result

text()

全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务