###### tags: `Week_2`, `Heap` # Heap ## 1046. [Last Stone Weight](https://leetcode.com/problems/last-stone-weight/) Beny (Too New) ```csharp= public class Solution { public int LastStoneWeight(int[] stones) { PriorityQueue<int,int> qstones = new PriorityQueue<int,int>(stones.Select(x=>(x,-x))); while (qstones.Count > 1){ int num = qstones.Dequeue() - qstones.Dequeue(); if (num != 0) qstones.Enqueue(num, -num); } return (qstones.Count == 0) ? 0 : qstones.Peek(); } } ``` Beny (second try) ```csharp= public class solution{ public int LastStoneWeight(int[] stones) { List<int> list = new List<int>(); foreach (int val in stones) { list.Add(val); } while (list.Count > 1) { list = list.OrderByDescending(o => o).ToList(); int y = list[0]; int x = list[1]; if (x == y) { list.RemoveAt(0); list.RemoveAt(0); } else { list.RemoveAt(1); list[0] = y - x; } } return list.Count == 1 ? list[0] : 0; } } ```