3.11 log | 739. 每日温度,

739. 每日温度,496.下一个更大元素 I,503.下一个更大元素II,

class Solution {
public:
    vector<int> dailyTemperatures(vector<int>& temperatures) {
        stack<int> st;
        vector<int> result(temperatures.size(),0);
        st.push(0);
        for(int i=1;i<temperatures.size();i++){
            if(temperatures[i]<=temperatures[st.top()]){
                st.push(i);
            }
            else{
                while(!st.empty()&&temperatures[i]>temperatures[st.top()]){
                    result[st.top()]=i-st.top();
                    st.pop();
                }
                st.push(i);
            }
        }
        return result;
    }
};

这道题是运用了单调栈,单调栈就是栈里面的元素都是单调的,当新来的元素大于栈顶,栈顶要先弹出然后再加入新的元素成为栈顶,这道题栈里面的元素时时元素的数组下标,新进的元素都是和下标对应的数组进行比较,注意while循环里面要先判断栈是否为空再进行下一步判断,防止内存泄漏

496.下一个更大元素 I

class Solution {
public:
    vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {
        vector<int> result(nums1.size());
        vector<int> hash(10000,-1);
        stack<int> st;
        st.push(nums2[0]);
        for(int i=1;i<nums2.size();i++){
            while(!st.empty()&&nums2[i]>st.top()){
                hash[st.top()]=nums2[i];
                st.pop();
            }
            st.push(nums2[i]);
        }
        for(int i=0;i<nums1.size();i++){
            result[i]=hash[nums1[i]];
        }
        return result;
    }
};

这道题也是运用了单调栈,因为要求nums1的元素在nums2中的相同的元素的右边第一个大于它的元素,如果没有就为-1,则需要创建一个hash表来映射,result[i]=hash[nums1[i]],其他思路和每日温度思路相同,栈里储存的元素为nums2[i]

503.下一个更大元素II

class Solution {
public:
    vector<int> nextGreaterElements(vector<int>& nums) {
        vector<int> result(nums.size(),-1);
        stack<int> st;
        for(int i=0;i<2*nums.size();i++){
            int j=i%nums.size();
            while(!st.empty()&&nums[j]>nums[st.top()]){
                result[st.top()]=nums[j];
                st.pop();
            }
            st.push(j);
        }
        return result;
    }
};

整体代码和每日温度类似,对于首尾相连的环形数组,遍历长度扩展为两倍size,循环内下标为i%nums.size(),栈里储存的元素为变化后的下标

aiohttp是一个异步HTTP客户端/服务器框架,它支持Python 3.5+。在Python 3.11中,你可以使用以下方式创建一个异步的HTTP客户端会话: ```python import aiohttp import asyncio async def main(): async with aiohttp.ClientSession() as session: async with session.get('https://www.example.com') as response: print(await response.text()) asyncio.run(main()) ``` 这里使用了async with语句来创建一个aiohttp.ClientSession()实例。async with语句会自动关闭会话,确保资源被正确地释放。 然后,我们使用async with语句来发送一个GET请求并获取响应。我们使用await关键字来等待响应。最后,我们打印响应的文本内容。 你可以在会话对象上调用多个方法来发送HTTP请求,例如:get、post、put、delete等。在这些方法中,你可以传递URL、请求头、请求体和其他参数。例如: ```python async with session.post('https://www.example.com', data={'key': 'value'}) as response: print(await response.text()) ``` 这将使用POST方法发送一个请求,同时将一个字典作为请求体发送。在响应对象上,你可以使用多个方法来获取响应的数据,例如:text、json、content、status等。例如: ```python response_text = await response.text() # 获取响应文本 response_json = await response.json() # 获取响应JSON response_content = await response.read() # 获取响应二进制数据 response_status = response.status # 获取响应状态码 ``` 总之,aiohttp是一个非常强大的异步HTTP客户端库,它为Python 3.11提供了很多有用的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值