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

凤山县网站建设金戈枸橼酸西地那非片

凤山县网站建设,金戈枸橼酸西地那非片,网站风格评价,营销号是啥意思巴菲特股东大会 一年一度的巴菲特股东大会如常召开#xff0c;只不过这次坐在老爷子左手边的不再是老搭档查理芒格#xff0c;而是钦点的未来继任者#xff0c;格雷格阿贝尔。 随着芒格#xff08;99岁#xff09;的离开#xff0c;巴菲特#xff08;93岁#xff09;也… 巴菲特股东大会 一年一度的巴菲特股东大会如常召开只不过这次坐在老爷子左手边的不再是老搭档查理芒格而是钦点的未来继任者格雷格·阿贝尔。 随着芒格99岁的离开巴菲特93岁也曾直言自己已进入加时赛目前管理巨额资产的核心人数也从 7 人也变成了 6 位。 去年伯克希尔盈利 962 亿美元和苹果的 969 亿利润相当。 在长达 5 个小时的大会上老爷子回答了一些股东问题。 其中比较有意思的是关于「减持苹果」的问题。 过去很长时间苹果一直是伯克希尔的第一重仓。 哪怕现在减持了 13%也仍是第一重仓。 老爷子的回答是认为美国未来会加税想趁着加税之前降低仓位。 这其实没有说服力更像是一个敷衍式的回答。 我们都知道巴菲特和芒格都是强调「价值投资」为核心的大师他们那些经典案例无不是穿越牛熊。 即使巴菲特有特别的数据或信息来源也不会是因为单纯的税收政策因为这变动不足以让伯克希尔卖掉 1000 万股苹果更何况苹果还是著名的避税公司。 所以哪怕是巴菲特不要光听他说什么要看他做什么。 老爷子在疫情前期还抄底了航空股高调宣布长期看好航空结果 2 个月后清仓式的割肉止损呢。 投资者赌徒们最喜欢做的事情就是先射箭后画靶。 减持苹果归根到底还是「信心下降」。 盲猜老爷子对苹果信心下降是因为「苹果是美国科技公司中的亲中派」、「苹果过去几年缺乏创新在 AI 等领域落后重金押注的 AR/VR 领域目前不合预期」、「败诉欧盟iOS 开放侧载护城河被撕开口子」等多件事情的叠加。 如果再叠加「此前巴菲特清仓台积电并公开表示是因为对地缘形势的担心」的话或许是中美关系的未来走向才是主导减持的核心原因。 ... 回归主线。 来一道「国内大厂」常考的数据结构题。 题目描述 平台LeetCode 题号1670 请你设计一个队列支持在前中后三个位置的 push 和 pop 操作。 请你完成 FrontMiddleBack 类 FrontMiddleBack() 初始化队列。 void pushFront(int val) 将 val 添加到队列的 最前面 。 void pushMiddle(int val) 将 val 添加到队列的 正中间 。 void pushBack(int val) 将 val 添加到队里的 最后面 。 int popFront() 将最前面的元素从队列中删除并返回值如果删除之前队列为空那么返回 -1。 int popMiddle() 将正中间的元素从队列中删除并返回值如果删除之前队列为空那么返回 -1。 int popBack() 将 最后面 的元素从队列中删除并返回值如果删除之前队列为空那么返回 -1。 请注意当有 两个 中间位置的时候选择靠前面的位置进行操作。比方说 将 6 添加到 [1, 2, 3, 4, 5] 的中间位置结果数组为 [1, 2, 6, 3, 4, 5]。 从 [1, 2, 3, 4, 5, 6] 的中间位置弹出元素返回 3数组变为 [1, 2, 4, 5, 6]。 示例 1 输入[FrontMiddleBackQueue, pushFront, pushBack, pushMiddle, pushMiddle, popFront, popMiddle, popMiddle, popBack, popFront][[], [1], [2], [3], [4], [], [], [], [], []]输出[null, null, null, null, null, 1, 3, 4, 2, -1]解释FrontMiddleBackQueue q  new FrontMiddleBackQueue();q.pushFront(1);   // [1]q.pushBack(2);    // [1, 2]q.pushMiddle(3);  // [1, 3, 2]q.pushMiddle(4);  // [1, 4, 3, 2]q.popFront();     // 返回 1 - [4, 3, 2]q.popMiddle();    // 返回 3 - [4, 2]q.popMiddle();    // 返回 4 - [2]q.popBack();      // 返回 2 - []q.popFront();     // 返回 -1 - [] 队列为空 提示 最多调用 次 pushFront pushMiddle pushBack popFront popMiddle 和 popBack。 双端队列 只要求在头部或尾部高效插入/弹出元素的话容易联想到双端队列。 还需要考虑往中间插入/弹出元素的话会想到使用两个双端队列。 将两个双端队列分别称为 l 和 r把 l 和 r 拼接起来就是完整元素列表 由于双端队列本身支持 首尾操作问题的关键在于如何确保涉及 Middle 操作的高效性。 我们可以设计一个 update 方法用于确保两队列的相对平衡 当元素总个数为偶数时确保两队列元素相等 当元素总个数为奇数时确保 r 队列比 l 队列元素多一个 如此一来当我们需要往 Middle 插入元素时始终往 l 的尾部插入即可而当需要读取 Middle 位置元素时根据两队列的元素个数关系决定是从 l 的尾部还是从 r 的头部取元素。 以下是对上述代码中几个操作的简短实现说明 pushFront将元素添加到 l 队列的头部调用 update 保持队列平衡 pushMiddle将元素添加到 l 队列的尾部调用 update 保持队列平衡 pushBack将元素添加到 r 队列的尾部调用 update 保持队列平衡 popFront若 l 队列不为空从 l 队列的头部弹出一个元素否则从 r 队列的头部弹出一个元素当且仅当元素个数为 时队列 l 为空唯一元素在队列 r 中调用 update 保持队列平衡 popMiddle若 l 队列和 r 队列的大小相等则从 l 队列的尾部弹出一个元素否则从 r 队列的头部弹出一个元素。调用 update 保持队列平衡 popBack从 r 队列的尾部弹出一个元素调用 update 保持队列平衡 双端队列的实现可通过「数组 首尾坐标指针」来实现。为方便大家理清脉络先使用语言自带的 Deque 实现一版。 Java 代码Deque 版 class FrontMiddleBackQueue {    DequeInteger l  new ArrayDeque(1010), r  new ArrayDeque(1010);    public void pushFront(int val) {        l.addFirst(val);        update();    }    public void pushMiddle(int val) {        l.addLast(val);        update();    }    public void pushBack(int val) {        r.addLast(val);        update();    }    public int popFront() {        if (l.size()  r.size()  0) return -1;        int ans  l.size() ! 0 ? l.pollFirst() : r.pollFirst();        update();        return ans;    }    public int popMiddle() {        if (l.size()  r.size()  0) return -1;        int ans  l.size()  r.size() ? l.pollLast() : r.pollFirst();        update();        return ans;    }    public int popBack() {        if (l.size()  r.size()  0) return -1;        int ans  r.pollLast();        update();        return ans;    }    void update() {        while (l.size()  r.size()) r.addFirst(l.pollLast());        while (r.size() - l.size()  1) l.addLast(r.pollFirst());    }} 看过 Deque 实现版本考虑如何使用数组实现。 各类操作的总调用次数最多为 次我们可创建大小为 的数组并从下标 接近中间位置开始进行存储这样无论是从前还是往后存数都不会越界。 使用 lhe 和 lta 代表队列 l 的头部和尾部坐标使用 rhe 和 rta 代表队列 r 的头部和尾部坐标所有坐标初始值均为 。 需要注意的是ta无论是 lta 还是 rta是严格指向尾部因此如果要往尾部插数的话需要先对指针自增移到下一个空闲位置再赋值而 he无论是 lhe 还是 rhe是指向实际队列头部的前一位置需要先赋值再前移。当 he ta 代表队列为空。 Java 代码纯数组版 class FrontMiddleBackQueue {    int[] l  new int[2010], r  new int[2010];    int lhe  1010, lta  1010, rhe  1010, rta  1010;    public void pushFront(int val) {        l[lhe--]  val;        update();    }    public void pushMiddle(int val) {        l[lta]  val;        update();    }    public void pushBack(int val) {        r[rta]  val;        update();    }    public int popFront() {        if (getSize(lhe, lta)  0  getSize(rhe, rta)  0) return -1;        int ans  getSize(lhe, lta) ! 0 ? l[lhe] : r[rhe];        update();        return ans;    }    public int popMiddle() {        if (getSize(lhe, lta)  getSize(rhe, rta)  0) return -1;        int ans  getSize(lhe, lta)  getSize(rhe, rta) ? l[lta--] : r[rhe];        update();        return ans;    }    public int popBack() {        if (getSize(lhe, lta)  0  getSize(rhe, rta)  0) return -1;        int ans  r[rta--];        update();        return ans;    }    int getSize(int he, int ta) {        return ta - he;    }    void update() {        while (getSize(lhe, lta)  getSize(rhe, rta)) r[rhe--]  l[lta--];        while (getSize(rhe, rta) - getSize(lhe, lta)  1) l[lta]  r[rhe];    }} C 代码 class FrontMiddleBackQueue {public:    int l[2010], r[2010], lhe  1010, lta  1010, rhe  1010, rta  1010;    void pushFront(int val) {        l[lhe--]  val;        update();    }    void pushMiddle(int val) {        l[lta]  val;        update();    }    void pushBack(int val) {        r[rta]  val;        update();    }    int popFront() {        if (getSize(lhe, lta)  0  getSize(rhe, rta)  0) return -1;        int ans  getSize(lhe, lta) ! 0 ? l[lhe] : r[rhe];        update();        return ans;    }    int popMiddle() {        if (getSize(lhe, lta)  0  getSize(rhe, rta)  0) return -1;        int ans  getSize(lhe, lta)  getSize(rhe, rta) ? l[lta--] : r[rhe];        update();        return ans;    }    int popBack() {        if (getSize(lhe, lta)  0  getSize(rhe, rta)  0) return -1;        int ans  r[rta--];        update();        return ans;    }    int getSize(int he, int ta) {        return ta - he;    }    void update() {        while (getSize(lhe, lta)  getSize(rhe, rta)) r[rhe--]  l[lta--];        while (getSize(rhe, rta) - getSize(lhe, lta)  1) l[lta]  r[rhe];    }}; Python 代码 class FrontMiddleBackQueue:    def __init__(self):        self.l, self.r  [0] * 2010, [0] * 2010        self.r  [0] * 2010        self.lhe, self.lta, self.rhe, self.rta  1010, 1010, 1010, 1010    def pushFront(self, val: int) - None:        self.l[self.lhe]  val        self.lhe - 1        self.update()    def pushMiddle(self, val: int) - None:        self.lta  1        self.l[self.lta]  val        self.update()    def pushBack(self, val: int) - None:        self.rta  1        self.r[self.rta]  val        self.update()    def popFront(self) - int:        if self.getSize(self.lhe, self.lta)  self.getSize(self.rhe, self.rta)  0:            return -1        if self.getSize(self.lhe, self.lta) ! 0:            self.lhe  1            ans  self.l[self.lhe]        else:            self.rhe  1            ans  self.r[self.rhe]        self.update()        return ans    def popMiddle(self) - int:        if self.getSize(self.lhe, self.lta)  self.getSize(self.rhe, self.rta)  0:            return -1        if self.getSize(self.lhe, self.lta)  self.getSize(self.rhe, self.rta):            ans  self.l[self.lta]            self.lta - 1        else:            self.rhe  1            ans  self.r[self.rhe]        self.update()        return ans    def popBack(self) - int:        if self.getSize(self.lhe, self.lta)  self.getSize(self.rhe, self.rta)  0:            return -1        ans  self.r[self.rta]        self.rta - 1        self.update()        return ans    def getSize(self, he: int, ta: int) - int:        return ta - he    def update(self) - None:        while self.getSize(self.lhe, self.lta)  self.getSize(self.rhe, self.rta):            self.r[self.rhe]  self.l[self.lta]            self.rhe - 1            self.lta - 1        while self.getSize(self.rhe, self.rta) - self.getSize(self.lhe, self.lta)  1:            self.lta  1            self.rhe  1            self.l[self.lta]  self.r[self.rhe] TypeScript 代码 class FrontMiddleBackQueue {    private l: number[];    private r: number[];    private lhe: number;    private lta: number;    private rhe: number;    private rta: number;    constructor() {        this.l  Array(2010).fill(0), this.r  Array(2010).fill(0);        this.lhe  1010, this.lta  1010, this.rhe  1010, this.rta  1010;    }    pushFront(val: number): void {        this.l[this.lhe--]  val;        this.update();    }    pushMiddle(val: number): void {        this.l[this.lta]  val;        this.update();    }    pushBack(val: number): void {        this.r[this.rta]  val;        this.update();    }    popFront(): number {        if (this.getSize(this.lhe, this.lta)  this.getSize(this.rhe, this.rta)  0) return -1;        const ans  this.getSize(this.lhe, this.lta) ! 0 ? this.l[this.lhe] : this.r[this.rhe];        this.update();        return ans;    }    popMiddle(): number {        if (this.getSize(this.lhe, this.lta)  this.getSize(this.rhe, this.rta)  0) return -1;        const ans  this.getSize(this.lhe, this.lta)  this.getSize(this.rhe, this.rta) ? this.l[this.lta--] : this.r[this.rhe];        this.update();        return ans;    }    popBack(): number {        if (this.getSize(this.lhe, this.lta)  this.getSize(this.rhe, this.rta)  0) return -1;        const ans  this.r[this.rta--];        this.update();        return ans;    }    private getSize(he: number, ta: number): number {        return ta - he;    }    private update(): void {        while (this.getSize(this.lhe, this.lta)  this.getSize(this.rhe, this.rta)) this.r[this.rhe--]  this.l[this.lta--];        while (this.getSize(this.rhe, this.rta) - this.getSize(this.lhe, this.lta)  1) this.l[this.lta]  this.r[this.rhe];    }} 时间复杂度所有操作复杂度均为 空间复杂度 进阶 更进一步使用双向链表并与实现 update 类似效果维护 Middle 位置的元素节点同样可实现 各项操作你能完成吗 与纯数组版相比使用链表好处在于可严格按需创建。 class Node {    Node prev, next;    int val;    Node (int _val) {        val  _val;    }}class FrontMiddleBackQueue {    Node he, ta, mid;    int lsz, rsz;    public FrontMiddleBackQueue() {        he  new Node(-1); ta  new Node(-1);        he.next  ta; ta.prev  he;        mid  ta;        lsz  rsz  0;    }    public void pushFront(int val) {        Node cur  new Node(val);        cur.next  he.next;        cur.prev  he;        he.next.prev  cur;        he.next  cur;        lsz;        update();    }    public void pushMiddle(int val) {        Node cur  new Node(val);        cur.next  mid;        cur.prev  mid.prev;        mid.prev.next  cur;        mid.prev  cur;        lsz;        update();    }    public void pushBack(int val) {        Node cur  new Node(val);        cur.next  ta;        cur.prev  ta.prev;        ta.prev.next  cur;        ta.prev  cur;        rsz;        update();    }    public int popFront() {        if (lsz  rsz  0) return -1;        int ans  he.next.val;        he.next.next.prev  he;        he.next  he.next.next;        lsz--;        update();        return ans;    }    public int popMiddle() {        if (lsz  rsz  0) return -1;        Node realMid  null;        if (lsz  rsz) {            realMid  mid.prev;            lsz--;        } else {            realMid  mid;            mid  mid.next;            rsz--;        }        int ans  realMid.val;        realMid.prev.next  realMid.next;        realMid.next.prev  realMid.prev;        realMid  realMid.next;        update();        return ans;    }    public int popBack() {        if (lsz  rsz  0) return -1;        int ans  ta.prev.val;        ta.prev.prev.next  ta;        ta.prev  ta.prev.prev;        rsz--;        update();        return ans;    }    void update() {        while (lsz  rsz) {            mid  mid.prev;            lsz--; rsz;        }        while (rsz - lsz  1) {            mid  mid.next;            lsz; rsz--;        }        if (lsz  rsz  1) mid  ta.prev;        if (lsz  rsz  0) mid  ta;    }} 最后 给大伙通知一下 全网最低价 LeetCode 会员目前仍可用 ~ 年度会员有效期加赠两个月; 季度会员有效期加赠两周 年度会员获 66.66 现金红包; 季度会员获 22.22 现金红包 年度会员参与当月丰厚专属实物抽奖中奖率 30%) 专属链接leetcode.cn/premium/?promoChannelacoier 我是宫水三叶每天都会分享算法知识并和大家聊聊近期的所见所闻。 欢迎关注明天见。 更多更全更热门的「笔试/面试」相关资料可访问排版精美的 合集新基地
http://www.pierceye.com/news/486590/

相关文章:

  • wordpress主题外贸网站wordpress检查php版本号
  • 便宜电商网站建设找平面图的网站
  • 大型网站建设制作平台东莞南城房价
  • 360免费视频网站建设mvc网站开发之美
  • 武宁县建设工程招标公告门户网站设计一个网站先做哪些构造
  • 公司网站免费建设2023设计院裁员惨烈程度
  • 别人做的网站不能用设计网站教程
  • 设计师发布作品的网站wordpress仿
  • 品牌微信网站建设柳州做网站制作的公司有哪些
  • 买域名做网站推广都是些什么网站点击后的loading是怎么做的
  • 北京网站优化技术泰州自助建站软件
  • 公司企业网站建设目的站长统计官方网站
  • 集团公司网站模板wordpress更换主题方法
  • 临沂网站建设电话建设网站审批手续
  • 国外做健康的网站专门做鞋子的网站吗
  • 手机网站支持微信支付吗北京短视频拍摄
  • 做静态网站工资多少网站前期推广
  • 做预算查价格的网站是哪个好网站开发维护多少钱
  • 个人互动网站365建筑人才网
  • 天津外贸公司网站制作淘客cms网站建设
  • 怎样做微网站网站建设pc指什么软件
  • 四川 网站建设wordpress腾讯地图插件下载
  • 宁波网站公司哪家好百度关键词搜索量排名
  • 北京国税局网站做票种核定时眉山网站优化
  • 网站备案授权书成都网站建设十强企业
  • 网站流量图怎么做的wordpress单号管理系统
  • 生活服务网站建设方案天猫店铺装修做特效的网站
  • 公众号做视频网站会封吗开发微分销系统
  • 情侣博客网站模板下载kindeditor for wordpress
  • 广东网站备案进度查询长沙seo网络营销推广